Commandes Docker
Créer un conteneur
docker run <nom de l'image>
Lister les conteneurs
Lister les conteneurs en cours d'exécution.
docker ps
Lister tous les conteneurs.
docker ps -a
Au lieu de docker ps
, vous pouvez également utiliser docker container ls
.
Lister les images
Deux méthodes (attention au "s" dans image(s))
docker image ls
docker images
Supprimer un conteneur
docker rm <id du conteneur>
Possibilité de n'indiquer que les premiers caractères ou bien de chaîner les ID s'il faut supprimer plusieurs conteneurs.
Il est également envisageable d'utiliser une autre commande pour le même résultat.
docker container rm <id du conteneur>
Supprimer une image
docker image rm <id de l'image>
Télécharger une image
docker pull <nom de l'image>
Lancer un conteneur dans Docker
La commande ci-dessous permet de lancer un conteneur, modifier son contenu et l'effacer automatiquement lorsque l'utilisateur le quitte.
docker run -it --rm <nom de l'image>
La même chose qu'au-dessus, mais cette fois-ci le conteneur ne doit pas s'effacer automatiquement.
docker run -it <nom de l'image>
ℹ️ La seule différence entre les deux est le --rm
.
Redémarrer un conteneur
docker start <id>
Arrêter un conteneur
docker stop <id>
Entrer et interagir dans un conteneur qui est déjà démarré
docker exec -it <id> bash
Redémarrer et interagir avec un conteneur en une ligne de commande
docker start -ai <id>
Copier un dossier et son contenu d'un conteneur dans un dossier de l'hôte
docker cp <id du conteneur>:/<dossier du conteneur>/. <dossier de l'hôte>
Copier un dossier et son contenu de l'hôte dans un dossier d'un conteneur
docker cp <dossier de l'hôte> <id du conteneur>:/<dossier du conteneur>/.
Volumes mappés
Lier un dossier dans la machine locale avec un dossier dans le conteneur.
docker run -it --rm -v <dossier local>:<dossier conteneur> <image>
Volumes managés
Créer un volume managé
docker volume create <nom du volume>
Lister les volumes managés
docker volume ls
Supprimer un volume managé
docker volume rm <nom du volume>
Lier un volume managé
docker run --rm -it -v <nom du volume>:<dossier du conteneur> <image>
Information du volume managé
docker volume inspect <nom du volume>
[
{
"CreatedAt": "2021-08-18T09:34:16Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/super_volume/_data",
"Name": "super_volume",
"Options": {},
"Scope": "local"
}
]
Réseau : mapper des ports
Par exemple avec le conteneur nginx, ...
docker run --rm -p <port local>:<port conteneur> <image>
Réseau : Commandes bash pour tester les réseaux
Réseau : Installer ping et ip
apt-get update && apt-get install -y iputils-ping iproute2
Ou alors vous pouvez utiliser l'image celtak/ubuntu-ping-ip
dont les programmes ping
et ip
sont déjà installé.
Réseau : Afficher les adresses IP
ip -c a
Réseau : Lister les réseaux disponibles
docker network ls
Réseau : Isoler un conteneur
docker run --rm -it --network=none <image>
Réseau : Créer un réseau bridge
docker network create --driver=bridge <nom du réseau>
Réseau : Créer un conteneur et le connecter en même temps
docker run -it --rm --network=<nom du réseau> --name=<nom du conteneur> <image>
Réseau : Créer et ensuite connecter
Réseau : Créer le conteneur
docker run --rm -it --name=<nom du conteneur> <image>
Réseau : Connecter le conteneur au réseau
docker network connect <nom du réseau> <nom du conteneur>
Réseau : Liste des conteneurs dans un réseau Docker (et d'autres informations)
docker network inspect <nom du réseau>
Réseau : Déconnecter les conteneurs du réseau
docker disconnect <nom du réseau> <conteneur>
Réseau : Supprimer des réseaux
docker network rm <nom du réseau> <nom du réseau> ...
Dockerfile : Exemple Dockerfile
FROM celtak/ubuntu-ping-ip
RUN apt-get update
RUN apt-get install -y nodejs
Dans cet exemple, nous utilisons comme base l'image celtak/ubuntu-ping-ip
pour créer notre image personnalisée. Nous ajoutons ensuite nodesjs
(Node.js).
Dockerfile : Construire une image
docker build -t <image> .
Il faut se placer dans le dossier qui contient le Dockerfile ou à défaut, remplacer .
par le chemin du fichier.
Dockerfile : Ajouter l'image au Dockerhub
docker tag <image> <repository>
docker push <repository>
Docker compose : docker-compose.yml simple
version: '3'
services:
<nom du service>:
image: <image de base>
container_name: <nom du conteneur>
Docker compose : Lancer le docker-compose.yml
docker-compose up
Lancer en arrière-plan.
docker-compose up -d
Docker compose : Interagir avec le conteneur
version: '3'
services:
<nom du service>:
image: <image de base>
container_name: <nom du conteneur>
stdin_open: true
tty: true
Ensuite utiliser la commande suivante.
docker exec -it <id du conteneur> bash
Docker compose : Arrêter les conteneurs
docker-compose stop
Docker compose : Supprimer les conteneurs
docker-compose rm
Docker compose : Volume mappé
version: '3'
services:
<nom du service>:
image: <image de base>
container_name: <nom du conteneur>
stdin_open: true
tty: true
volumes:
- <nom du dossier en local>:<nom du dossier dans le conteneur>
Docker compose : Volume managé
version: '3'
services:
<nom du service>:
image: <image de base>
container_name: <nom du conteneur>
stdin_open: true
tty: true
volumes:
- <nom du volume>:<nom du dossier dans le conteneur>
volumes:
<nom du volume>:
Docker compose : Réseau
Tous les conteneurs du docker-compose.yml sont automatiquement connecté à un réseau.
Docker compose : Réseau personnalisé
version: '3'
services:
<nom du service 1>:
image: <image de base>
container_name: <nom du conteneur 1>
stdin_open: true
tty: true
networks:
- <nom du réseau>
<nom du service 2>:
image: <image de base>
container_name: <nom du conteneur 2>
stdin_open: true
tty: true
networks:
- <nom du réseau>
networks:
<nom du réseau>:
driver: <type du réseau (pilote)>