Blame

41d26b Cédric 2026-04-12 08:43:04
1
#### Extraire la liste des subnets des différents networks docker :
7705c4 Cédric 2026-04-12 08:42:41
2
```bash
3
docker network ls | grep -v "NETWORK" | awk '{ print $1 }' | xargs docker network inspect | grep "Subnet\""
4
```
5
eb432c Cédric 2025-12-23 15:17:20
Initialisation
6
#### Extraire l'ip locale d'un conteneur en fonctionnement :
7
```bash
8
docker inspect --format '{{ .NetworkSettings.IPAddress }}' nom-de-conteneur
9
```
10
6babf4 Cédric 2025-12-23 15:34:28
11
#### Changer les DNS de votre instance, éditez /etc/docker/daemon.json :
eb432c Cédric 2025-12-23 15:17:20
Initialisation
12
```bash
13
{
14
"dns": [ "1.1.1.1", "8.8.8.8" ]
15
}
16
```
17
18
#### Install docker sur Debian :
19
```bash
20
# install de sudo le cas échéant
21
apt install sudo
22
23
# Add Docker's official GPG key:
24
sudo apt-get update
25
sudo apt-get install ca-certificates curl gnupg
26
sudo install -m 0755 -d /etc/apt/keyrings
27
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
28
sudo chmod a+r /etc/apt/keyrings/docker.gpg
29
30
# Add the repository to Apt sources:
31
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
32
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
33
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
34
sudo apt-get update
35
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
36
```
37
38
#### Commandes basiques
39
```bash
40
docker ps -a
41
docker ps -aq (juste l id de chaque conteneur)
42
docker images list
43
44
docker exec -it container-id command (-tty -interactive)
45
docker run -d -p 80:80 --name apache-php -v /docker:/var/www/html php:7.4-apache
46
docker kill apache-php
47
docker rm apache-php
48
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariad -> recup ip.
49
docker run --name myadmin -d --link mariadb:db -p 9080:80 phpmyadmin
50
docker exec -it mariadb bash
51
52
docker commit -p db012f940cd7 container1
53
docker save -o ~/container1.tar container1
54
docker load -i /root/container1.tar
55
docker run --name webserver -d -p 80:80 -p 443:443 -it debian:latest /bin/bash -l
56
docker exec -it /bin/bash
57
```
58
59
#### Sauvegarde d'un container en run :
60
61
```bash
62
docker commit container image-custom:version
63
docker save -o archive.tar
64
```
65
66
#### Install php à jour dans le conteneur :
67
```bash
68
apt install wget lsb-release apt-transport-https ca-certificates
69
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
70
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
71
apt update
72
```
73
74
#### Lancer un container avec une image donnée : (detach / interactive), nom : toto, alpine linux
75
```bash
76
docker run -di --name toto alpine:latest
77
docker exec -ti toto sh
78
docker run -tid -p 8080:80 --name web nginx:latest
79
docker inspect toto
80
docker start toto
81
docker stop toto
82
docker run -tid -p 8080:80 -v /srv/data/toto:/usr/share/nginx/html --name web nginx:latest
83
docker volume create totovol
84
docker volume ls
85
docker volume inspect totovol
86
docker run -tid -p 8080:80 --mount source=totovol,target=/usr/share/nginx/html --name web nginx:latest
87
docker run -tid --name toto --env MYVAR="toto" ubuntu:latest
88
docker run -tid --name toto --env-file vars.txt ubuntu:latest
89
docker run -tid --name toto --hostname toto.io ubuntu:latest
90
```
91
92
#### Creer une nouvelle image customisée à partir d'une image standard :
93
```bash
94
docker commit -m "nouvelle image custom" <id_image_source> toto:custom-1.0
95
docker image ls
96
docker run -tid --name imagecustom toto-custom-1.0
97
docker history <id_image_source>
98
```
99
100
#### Utilisation dockerfile :
101
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 :
102
103
```text
104
FROM ubuntu:latest
105
MAINTAINER hello c'est moi
106
ENV mavariable valeur
107
RUN apt-get update
108
RUN apt-get install vim
109
RUN apt-get install nmap \
110
&& apt-get clean \
111
&& rm -rf /tmp/*
112
(...)
113
VOLUME /var/www/html
114
COPY source /toto/destination
115
```
116
117
#### Network :
118
119
```bash
120
docker network create -d macvlan \
121
--subnet=192.168.2.0/24 \
122
--ip-range=192.168.2.128/25 \
123
--gateway=192.168.2.254 \
124
--aux-address="my-router=192.168.2.129" \
125
-o parent=eth0 wireguard_interne ?
126
127
docker built -t monimage:version . <point=dockerfile (Dockerfile en maj dans le rep courant, quoi)
128
docker image ls
129
docker history monimage:version
130
docker rmi monimage:version < suppression de l image custom
131
option "--volumes-from", pour importer les volumes d un autre conteneur
132
```
133
134
#### Securisation docker :
135
136
```bash
137
docker run -it --net host --pid host --userns host --cap-add audit_control \
138
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
139
-v /var/lib:/var/lib \
140
-v /var/run/docker.sock:/var/run/docker.sock \
141
-v /usr/lib/systemd:/usr/lib/systemd \
142
-v /etc:/etc --label docker_bench_security \
143
docker/docker-bench-security
144
```
145
146
#### Versioning et push/pull :
147
148
```bash
149
docker tag image_source:version image_dest:version
150
```
151
152
... 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)
153
154
#### Sauvegarder un conteneur :
155
156
```bash
157
docker save -o dir/fichier conteneur:version
158
docker load -i dir/fichier
159
```
160
161
#### Réseaux :
162
163
Le Bridge docker0 (en général 172.17.0.0/16) creer un autre réseau "bridge"
164
165
```bash
166
docker network create -d bridge --subnet 172.30.0.0/16 mynetwork
167
```
168
169
... et l'utiliser
170
171
```bash
172
docker run -tid --name conteneur1 --network mynetwork alpine
173
```
174
175
... 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
176
177
#### Docker-compose :
178
...à partir d'un rep contenant le docker-compose.yml
179
180
```bash
181
docker-compose build
182
docker-compose up
183
docker-compose up -d
184
docker-compose ps
185
docker-compose start
186
docker-compose stop
187
docker-compose rm
188
docker-compose down (stop + rm en même temps)
189
docker-compose scale SERVICE=3
190
docker-compose pull (maj des images)
191
```
192
193
### Mise en place d'une version spécifique
194
195
```bash
196
# Obtenir une version spécifique
197
apt-cache madison docker-ce | awk '{ print $3 }'
198
199
# L'installer
200
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
201
```
202
203
### Supprimer entièrement docker :
204
205
```bash
206
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
207
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
208
209
sudo rm -rf /var/lib/docker /etc/docker
210
sudo rm /etc/apparmor.d/docker
211
sudo groupdel docker
212
sudo rm -rf /var/run/docker.sock
213
sudo rm -rf /var/lib/containerd
214
sudo rm -r ~/.docker
215
```