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?
😲 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
- 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
- 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
- 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
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: