====== Memo pour Docker ======
paramètres communs aux objets:
* list: pour lister
* rm: pour supprimer un élément ce qui est arrété et non utilisé
* prune: pour supprimer TOUT ce qui est arrété et non utilisé
* inspect: pour les détails
===== Les différentes méthodes pour démarrer un contenaire =====
(docker run –help)
Si l'image n'existe pas en local, docker le télécharge depusi le hub docker
Toutes les images disponibles: [[https://hub.docker.com/|https://hub.docker.com/]]
[[https://www.baeldung.com/ops/docker-attach-detach-container|https://www.baeldung.com/ops/docker-attach-detach-container]]
==== par défaut mode foreground ====
Affiche le retours console du contenaire, un ctrl+c quite ET stop le contenaire
docker run image_docker
==== option -d ====
Mode détaché en background, pas de retours
docker run -d image_docker
Pour entrer dans le shell du contenaire, il faudra le lancer en mode interactif dans un pseudo TTY (voir plus loin).
==== option -it ====
Connecte le shell du contenaire dans le shell local, pour sortir SANS stopper le contenaire par ctrl+p suivi de ctrl+q
docker run -it image_docker /bin/sh
===== Pour mapper un port local sur un port du contenaire =====
docker run -d -p 8080:80 image_docker
===== Pour lister les images en local =====
docker image list
===== Pour lister les contenaires instanciés (arrêtés ou en marche) =====
docker ps -a
===== Pour arreter (éteindre) un contenaire =====
il faut connaitre son ID ou name
docker container list
puis
docker container stop [ID_contenair|Name_Contenaire]
ou
docker stop $(sudo docker ps -a -q)
===== Pour supprimer un contenaire =====
docker rm -f ID_Contenaire
ou
docker rm -f $(sudo docker ps -a -q)
si le contenaire tourne on doit d'abord l'éteindre ou utiliser l'option " -f "
ou pour tous les contenaires éteints
docker container prune
===== Pour entrer dans le shell du contenaire en background (mode detach) =====
il faut connaitre le nom du contenaire :
sudo docker container list
puis
docker exec -it nom_contenair sh
[[https://docs.docker.com/reference/cli/docker/container/exec/|https://docs.docker.com/reference/cli/docker/container/exec/]]
===== Pour monter un volume local dans le contenaire =====
[[https://blog.microlinux.fr/formation-docker-10-volumes/|https://blog.microlinux.fr/formation-docker-10-volumes/]]
docker run -d -p 8080:80 --volume volume_local:/point_de_montage_dans_contenaire:ro image_docker
Si le volume est un chemin absolu vers un répertoire existant (~/volume_local ou /home/volume_local) , avec cette méthode on ne peut pas gérer les volumes avec "docker volume". Si le volume n'existe pas il est créé automatiquement (voir ci-après).
docker run -d -p 8080:80 --name nom_contenaire --mount src=volume_local,dst=/point_de_montage_dans_contenaire:ro image_docker
===== Pour créer un volume. =====
Les volumes sont par défaut dans:
sudo ls -l /var/lib/docker/volumes/
sudo docker volume create Test1Vol
si on veut un stockage hors /var/lib/docker/volumes/
docker volume create --driver local --opt type=none --opt device=/chemin/vers/mon/dossier --opt o=bind nom_volume
===== Pour lister les volumes =====
docker volume list
===== Pour supprimer un volume =====
Meme si le contenaire qui utlisait le volume est supprimé, le volume reste dans docker. Pour le supprimer
docker volume rm nom_volume
===== Divers =====
IP par conteneur:
[[https://www.baeldung.com/ops/docker-assign-static-ip-container|https://www.baeldung.com/ops/docker-assign-static-ip-container]]
[[https://docs.docker.com/network/network-tutorial-standalone/|https://docs.docker.com/network/network-tutorial-standalone/]]
les volumes pour un conteneur:
[[https://blog.microlinux.fr/formation-docker-10-volumes/|https://blog.microlinux.fr/formation-docker-10-volumes/]]
à tester
[[https://www.cheatsheet.fr/2024/04/07/heberger-plusieurs-sites-dans-des-containers-docker/|https://www.cheatsheet.fr/2024/04/07/heberger-plusieurs-sites-dans-des-containers-docker/]]