[Docker] Cheat-sheet
Introduction
Cette page répertorie des commandes docker pour administrer vos conteneur et vos stacks.
Cheat-sheetPrincipales
Vérifier l'état du service
systemctl status docker
Vérifier le fonctionnement de docker
docker run hello-world
Télécharger une image Docker
docker pull <IMG>
Démarrer un conteneur
docker run -d -p <HOST:CT> --name <CT_NAME> <IMG>
Afficher les conteneurs actifs
docker ps
Vous pouvez ajouter l'option -a pour afficher tous les conteneurs.
Arrêter un conteneur
docker stop <CT_NAME>
Supprimer un conteneur
docker rm <CT_NAME>
Le conteneur doit être arrêté pour le supprimer.
Redémarrer un conteneur
docker restart <CT_NAME>
AfficherCopier lesun logsfichier d'de l'hôte sur un volume
docker cp /path/to/file.txt <CT_NAME>:/data/file.txt
Ouvrir un shell dans un conteneur
docker logsexec -it <CT_NAME> /bin/bash
Afficher la configuration d'un conteneur
docker inspect <CT_NAME>
Images
Lister les images présente sur le système
docker images
Supprimer une image docker
docker rmi <IMG>
Supprimer les images inutilisées
docker images -f dangling=true
Docker-file
Le docker-file est un fichier permettant de créer une image docker pour votre application :
# Utilise l'image Python comme base
FROM python:3.8
# Définit l'espace de travail
WORKDIR /app
# Copie les fichiers de l'application dans l'espace de travail
COPY . /app
# Installe les dépendances
RUN pip install -r requirements.txt
# Expose le port 5000 du conteneur
EXPOSE 5000
# Lance le script au démarrage de l'application.
CMD ["python", "app.py"]
Build une image à partir d'un Dockerfile
docker build -t <APP_NAME:latest> .
Réseau
Création de réseau Docker
Pour créer un réseau simple sur Docker, il faut exécuter la commande suivante :
docker network create --driver <DRVR_TYPE> <NET_NAME>
Types de drivers | Description | Commande |
bridge (default) | Créer un réseau Naté et isolé pour les conteneurs. | docker network create --driver bridge <NET_NAME> |
host | Utilise directement le réseau de l'hôte | docker run --network host --name <CT_NAME> <IMG> |
overlay | Permet aux conteneurs qui ne sont pas sur le même hôte d'appartenir à un même réseau (très utilisé avec Docker Swarm). | docker network create --driver overlay <NET_NAME> |
macvlan | Donne une adresse MAC aux conteneur ce qui les fait apparaître comme de véritables appareils du réseau de l'hôte. | docker network create -d macvlan --subnet=<NET_ID/MASK> --gateway=<IP> -o parent=<IFACE> <NET_NAME> |
Lister les réseaux existants
docker network ls
Afficher le détail d'un réseau
docker network inspect <NET_NAME>
Supprimer un réseau
docker network rm <NET_NAME>
Connecter un conteneur à un réseau
docker network connect <NET_NAME> <CT_NAME>
Déconnecter un conteneur d'un réseau
docker network disconnect <NET_NAME> <CT_NAME>
Créer un réseau isolé
docker network create --driver bridge --subnet <NET_ID/MASK> isolated_network
Volumes
Créer un volume
docker volume create <VOL_NAME>
Attacher un volume à un conteneur
docker run -d -v <VOL_NAME>:/data --name <CT_NAME> <IMG>
Les volumes docker sont stockés dans /var/lib/docker/volumes .
Faire du bind mount
Ce type de montage spécifie l'emplacement du volume sur le système hôte :
docker run -d -v /root/my_app/data:/data --name <CT_NAME> <IMG>
Lister les volumes
docker volume ls
Afficher les détails d'un volume
docker volume inspect <VOL_NAME>
Créer un volume en lecture seule
docker run -d -v /root/my_app/data:/data:ro --name <CT_NAME> <IMG>
Supprimer un volume
docker volume rm <VOL_NAME>
Nettoyer les volumes non utilisés
docker volume prune
CopierFaire unune fichiersauvegarde de l'hôte sur d'un volume
docker cprun /path/to/file.txt--rm --volumes-from <CT_NAME> -v $(pwd):/data/file.backup ubuntu tar cvzf /backup/backup.tar.gz /data
Docker-file
Le docker-file est un fichier permettant de créer une image docker pour votre application :
# Utilise l'image Python comme base
FROM python:3.8
# Définit l'espace de travail
WORKDIR /app
# Copie les fichiers de l'application dans l'espace de travail
COPY . /app
# Installe les dépendances
RUN pip install -r requirements.txt
# Expose le port 5000 du conteneur
EXPOSE 5000
# Lance le script au démarrage de l'application.
CMD ["python", "app.py"]
OuvrirBuild une image à partir d'un Dockerfile
docker build -t <APP_NAME:latest> .
Sécurité
Lancer un shellconteneur dansavec les droits d'un utilisateur non-root
docker run -u <UID>
Créer un secret
echo "<SECRET>" | docker secret create <SECRET_NAME> -
Ajouter un health check sur un conteneur
Cette option permet d'éteindre un conteneur automatique si celui-ci est en panne (pour éviter les problèmes de sécurité et les comportements inattendus) :
docker run --name <CT_NAME> --health-cmd="curl --fail http://localhost:80/health || exit 1" -d <CT_IMG>
Débogage
Vérifier l'état du service
systemctl status docker
Vérifier le fonctionnement de docker
docker run hello-world
Afficher les conteneurs actifs
docker ps
Vous pouvez ajouter l'option -a pour afficher tous les conteneurs.
Afficher les logs d'un conteneur
docker exec -itlogs <CT_NAME>
Afficher la configuration d'un conteneur
docker inspect <CT_NAME>
Afficher les statistiques des conteneurs
docker stats
Écouter les événements docker
docker events
Afficher les changements dans le système de fichier d'un conteneur
docker diff <CT_NAME>