Commit eb432c

2025-12-23 15:17:20 Cédric: Initialisation
/dev/null .. astuces docker.md
@@ 0,0 1,212 @@
+ # Astuces Docker
+
+ #### Extraire l'ip locale d'un conteneur en fonctionnement :
+ ```bash
+ docker inspect --format '{{ .NetworkSettings.IPAddress }}' nom-de-conteneur
+ ```
+
+ #### Astuce, changer les DNS de votre instance, éditez /etc/docker/daemon.json :
+ ```bash
+ {
+ "dns": [ "1.1.1.1", "8.8.8.8" ]
+ }
+ ```
+
+ #### Install docker sur Debian :
+ ```bash
+ # install de sudo le cas échéant
+ apt install sudo
+
+ # Add Docker's official GPG key:
+ sudo apt-get update
+ sudo apt-get install ca-certificates curl gnupg
+ sudo install -m 0755 -d /etc/apt/keyrings
+ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+ sudo chmod a+r /etc/apt/keyrings/docker.gpg
+
+ # Add the repository to Apt sources:
+ echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
+ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
+ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+ sudo apt-get update
+ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
+ ```
+
+ #### Commandes basiques
+ ```bash
+ docker ps -a
+ docker ps -aq (juste l id de chaque conteneur)
+ docker images list
+
+ docker exec -it container-id command (-tty -interactive)
+ docker run -d -p 80:80 --name apache-php -v /docker:/var/www/html php:7.4-apache
+ docker kill apache-php
+ docker rm apache-php
+ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariad -> recup ip.
+ docker run --name myadmin -d --link mariadb:db -p 9080:80 phpmyadmin
+ docker exec -it mariadb bash
+
+ docker commit -p db012f940cd7 container1
+ docker save -o ~/container1.tar container1
+ docker load -i /root/container1.tar
+ docker run --name webserver -d -p 80:80 -p 443:443 -it debian:latest /bin/bash -l
+ docker exec -it /bin/bash
+ ```
+
+ #### Sauvegarde d'un container en run :
+
+ ```bash
+ docker commit container image-custom:version
+ docker save -o archive.tar
+ ```
+
+ #### Install php à jour dans le conteneur :
+ ```bash
+ apt install wget lsb-release apt-transport-https ca-certificates
+ wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
+ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
+ apt update
+ ```
+
+ #### Lancer un container avec une image donnée : (detach / interactive), nom : toto, alpine linux
+ ```bash
+ docker run -di --name toto alpine:latest
+ docker exec -ti toto sh
+ docker run -tid -p 8080:80 --name web nginx:latest
+ docker inspect toto
+ docker start toto
+ docker stop toto
+ docker run -tid -p 8080:80 -v /srv/data/toto:/usr/share/nginx/html --name web nginx:latest
+ docker volume create totovol
+ docker volume ls
+ docker volume inspect totovol
+ docker run -tid -p 8080:80 --mount source=totovol,target=/usr/share/nginx/html --name web nginx:latest
+ docker run -tid --name toto --env MYVAR="toto" ubuntu:latest
+ docker run -tid --name toto --env-file vars.txt ubuntu:latest
+ docker run -tid --name toto --hostname toto.io ubuntu:latest
+ ```
+
+ #### Creer une nouvelle image customisée à partir d'une image standard :
+ ```bash
+ docker commit -m "nouvelle image custom" <id_image_source> toto:custom-1.0
+ docker image ls
+ docker run -tid --name imagecustom toto-custom-1.0
+ docker history <id_image_source>
+ ```
+
+ #### Utilisation dockerfile :
+ Dockerfile c'est quoi : fichier text avec séquence de tâches -> RUN / ENV (variables d'env) / EXPOSE (port mapping) / VOLUME / COPY (entre host et conteneur) / ENTRYPOINT (processus maitre du conteneur) exemple de dockerfile :
+
+ ```text
+ FROM ubuntu:latest
+ MAINTAINER hello c'est moi
+ ENV mavariable valeur
+ RUN apt-get update
+ RUN apt-get install vim
+ RUN apt-get install nmap \
+ && apt-get clean \
+ && rm -rf /tmp/*
+ (...)
+ VOLUME /var/www/html
+ COPY source /toto/destination
+ ```
+
+ #### Network :
+
+ ```bash
+ docker network create -d macvlan \
+ --subnet=192.168.2.0/24 \
+ --ip-range=192.168.2.128/25 \
+ --gateway=192.168.2.254 \
+ --aux-address="my-router=192.168.2.129" \
+ -o parent=eth0 wireguard_interne ?
+
+ docker built -t monimage:version . <point=dockerfile (Dockerfile en maj dans le rep courant, quoi)
+ docker image ls
+ docker history monimage:version
+ docker rmi monimage:version < suppression de l image custom
+ option "--volumes-from", pour importer les volumes d un autre conteneur
+ ```
+
+ #### Securisation docker :
+
+ ```bash
+ docker run -it --net host --pid host --userns host --cap-add audit_control \
+ -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
+ -v /var/lib:/var/lib \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v /usr/lib/systemd:/usr/lib/systemd \
+ -v /etc:/etc --label docker_bench_security \
+ docker/docker-bench-security
+ ```
+
+ #### Versioning et push/pull :
+
+ ```bash
+ docker tag image_source:version image_dest:version
+ ```
+
+ ... Rajouter un "tag image\_dest:version" à l'image source d'un conteneur idem pour la registry , il faut tagger l'image à push par son nomd'image complet (voir la doc gitlab par ex)
+
+ #### Sauvegarder un conteneur :
+
+ ```bash
+ docker save -o dir/fichier conteneur:version
+ docker load -i dir/fichier
+ ```
+
+ #### Réseaux :
+
+ Le Bridge docker0 (en général 172.17.0.0/16) creer un autre réseau "bridge"
+
+ ```bash
+ docker network create -d bridge --subnet 172.30.0.0/16 mynetwork
+ ```
+
+ ... et l'utiliser
+
+ ```bash
+ docker run -tid --name conteneur1 --network mynetwork alpine
+ ```
+
+ ... Options de lancement réseau sur les conteneurs : --net : none --net : host --net container:nom-du-conteneur --link nom-du-conteneur > comme --net container mais ajout dans etc/host du conteneur lui-même options --dns dans le resolv.conf ou --add-host toto:ip pour rajouter dans le etc/hosts directement
+
+ #### Docker-compose :
+ ...à partir d'un rep contenant le docker-compose.yml
+
+ ```bash
+ docker-compose build
+ docker-compose up
+ docker-compose up -d
+ docker-compose ps
+ docker-compose start
+ docker-compose stop
+ docker-compose rm
+ docker-compose down (stop + rm en même temps)
+ docker-compose scale SERVICE=3
+ docker-compose pull (maj des images)
+ ```
+
+ ### Mise en place d'une version spécifique
+
+ ```bash
+ # Obtenir une version spécifique
+ apt-cache madison docker-ce | awk '{ print $3 }'
+
+ # L'installer
+ apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
+ ```
+
+ ### Supprimer entièrement docker :
+
+ ```bash
+ sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
+ sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
+
+ sudo rm -rf /var/lib/docker /etc/docker
+ sudo rm /etc/apparmor.d/docker
+ sudo groupdel docker
+ sudo rm -rf /var/run/docker.sock
+ sudo rm -rf /var/lib/containerd
+ sudo rm -r ~/.docker
+ ```
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9