Docker

Introduction

🤔 Bahh je dirais que c'est comme le bateau qui contient beacoups de containers, ils sont sur le même beateau mais chacun est isolé des autres selon son contenu mais ils peuvent communiquer entre eux par des canaux bien définis(le réseau=> network).

Un contenair docker est une image en execution. ohhh a new word 😵? Oui mais je vous l'explique, une image Docker représente le système de fichiers, sans les processus. ... Par contre un conteneur est l'exécution d'une image : il possède la copie du système de fichiers de l'image, ainsi que la capacité de lancer des processus. En gros, c'est un OS, avec lequel vous pouvez interagir

Quoi encore? drawing

😲 Les volumes Docker: c'est un endroit qu'on crée pour préserver les données générées par le conteneur en cours d'exécution . Ils sont stockés sur l'hôte, indépendamment du cycle de vie du conteneur. Cela permet aux utilisateurs de sauvegarder facilement des données et de partager des systèmes de fichiers entre les conteneurs

Fonctionnement

Installation

Je rappel que si vous avez Windows vous allez avoir besoin de ce tutorial installe on windows Pour Lunix: Enlever l'ancienne version si existe

sudo apt-get remove docker docker-engine docker.io containerd runc 

Installe Docker:

 sudo apt-get update
 sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Rajouter les GPG Key :


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

si vous n'avez pas curl installé alors faite le ici

Exemple d'image

Recupere une image de docker hub voici le liens où trouver la liste des images que vous pouvez recuperer les images

docker pull ubuntu:22.04

Alpine Alpine Linux est une distribution Linux. Qui est legère et est parfait pour les petits système d'exploitation l'image ne fait que 5 Mo.

docker pull alpine:3.15.0

Création d'un container

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

Exemple:

docker run -it --pid=container:my-redis my_strace_docker_image bash

Créeation d'un volume

docker volume create [OPTIONS] [VOLUME]

Exemple:

docker run -d \
  --name devtest \
  -v myvol2:/app \
  nginx:latest

Dockerfile

Bahhh ce fichier contient la manière dont on crée notre image, au lieu de le faire en ligne de commande on peut le faire dans un fichier dont la maintenance est facile.

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

Docker-compose

Installation

Vous trouverez ici tout ce qu'il vous faut sur Docker-compose

 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Appliquez les autorisations exécutables au binaire ici la doc

sudo chmod +x /usr/local/bin/docker-compose

Utilisation

Rappelons que ce fichier contient notre docker run commande

Exemple de docker-compose

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

Commandes utiles

  1. Container Management CLIs
    • docker run image : crée le container et le lance
    • docker start container: lance le container
    • docker stop container: arrête le container
    • docker kill container: tue le container
    • docker restart container: arrête le container et le lance
    • docker pause container: suspend le container
    • docker rm container: detruit le container
  2. Inspection du conteneur
    • docker ps : liste l'ensemble des container en cours d'execution
    • docker ps -a: liste tous containers
    • docker logs [-f] container: liste les logs
  3. Interagir avec le conteneur et images
    • docker attach container : rejoint le container en cours mais si on l'arret il tue le container en cours
    • docker exec container args..: lance un container
    • docker images: liste toutes les images
    • docker pull repo[:tag]: pull une image du registry
    • docker push repo[:tag]: push une image du registry
    • docker images: liste toutes les images

Conclusion

drawing

Nous arrivons à la fin de notre tutorial, pour plus d'informations je vous recommande la documentation du Docker dont j'ai mis le liens en bas dans les ressources.

Sources:

Docker cheat sheet