[Docker] Cheat-sheet
Introduction
Cette page répertorie des commandes docker pour administrer vos conteneur et vos stacks.
Cheat-sheet
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>
Afficher les logs d'un conteneur
docker logs <CT_NAME>
Afficher la configuration d'un conteneur
docker inspect <CT_NAME>
Lister les images présente sur le système
docker images
Supprimer une image docker
docker rmi <IMG>
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> .
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 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
Copier un fichier 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 exec -it <CT_NAME> /bin/bash