====== Docker ====== * [[https://jakub-m.github.io/2022/09/10/docker.html|Running Docker images without Docker]] * [[https://docker-curriculum.com|Docker for beginners]] * [[https://blog.stephane-robert.info/docs/conteneurs/moteurs-conteneurs/docker-network/|Comprendre le réseau Docker]] * [[https://tbhaxor.com/docker-containers-security/#__do_not_save__|Docker Containers Security]] * [[https://danlevy.net/docker-security-tips-for-self-hosting/|Essential Docker Security Tips for Self-Hosting]] ==== Utilisation basique ==== Pour lancer un shell dans un conteneur avec Debian Buster : docker run -it debian:buster Une fois dans le conteneur, pour utiliser efficacement ''apt'' : DEBIAN_FRONTEND=noninteractive apt update L'option ''-p 8000:8000'' (''hôte:conteneur'') permet de partager le port 8000. Du point de vue du conteneur, la machine hôte a l'IP 172.17.0.1 (Docker ajoute une interface réseau à la machine hôte). L'option ''%%--%%rm'' permet de supprimer le conteneur lorsqu'il est arrêté. === Support de l'UTF-8 === apt install locales dpkg-reconfigure locales # choisir en_US.UTF-8 puis C.UTF-8 ==== Arrêter / Stopper tous les containers ==== [[https://coderwall.com/p/ewk0mq/stop-remove-all-docker-containers|Source]] docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) ==== Rentrer dans un container déjà lancé ==== [[https://stackoverflow.com/questions/30172605/how-do-i-get-into-a-docker-containers-shell|Source]] Récupérer le nom du container : docker ps Puis : docker exec -ti $name /bin/bash ==== Partager un dossier ==== Utiliser l'option ''-v'', par exemple : docker run -it --rm -v $PWD:/foo -w /foo debian L'option ''-w'' permet de se place tout de suite dans le dossier indiqué une fois le conteneur lancé. ==== Copie de fichiers entre containers démarrés et hôte ==== [[https://stackoverflow.com/questions/22907231/how-to-copy-files-from-host-to-docker-container|Source]] docker cp 77e7:/etc/php/8.1/fpm/php.ini . ==== Lancer une application graphique ==== [[https://stackoverflow.com/questions/65642916/running-a-qt-gui-in-a-docker-container|Source]] docker run -it --rm -e "DISPLAY=$DISPLAY" -v "$HOME/.Xauthority:/root/.Xauthority:ro" debian:latest ==== Libérer de l'espace disque occupé par Docker ==== sudo docker system prune -a --volumes ==== Changer l'emplacement des données de Docker ==== * https://docs.docker.com/engine/reference/commandline/dockerd/ * [[https://stackoverflow.com/questions/36014554/how-to-change-the-default-location-for-docker-create-volume-command]] Créer le fichier ''/etc/docker/daemon.json'' : { "data-root": "/media/linux/docker/" } Redémarrer le service: sudo service docker restart ==== Fonctionnement de Docker ==== * [[https://muhammadraza.me/2024/building-container-runtime-python/|Understanding Docker Internals: Building a Container Runtime in Python]]