Bonjour

Je débute actuellement avec Docker (en gros je cherche à comprendre comment cela fonctionne et donc comment je peux m'en servir)

J'ai crée ma première image avec ce docker file

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
FROM debian

# install apache and site
RUN apt-get update && apt-get install -y \
    apache2 \
    && rm -rf /var/lib/apt/lists/*
# create directories if necessary
RUN if ! [ -d /var/run/apache2 ]; then mkdir /var/run/apache2;fi
RUN if ! [ -d /var/log/apache2 ]; then mkdir /var/log/apache2;fi
RUN if ! [ -d /var/lock/apache2 ]; then mkdir /var/lock/apache2;fi

# add variable system
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

# add module apache
RUN a2enmod proxy proxy_http
RUN a2ensite default-ssl 
RUN a2enmod ssl

# minimal param
RUN rm /etc/apache2/sites-enabled/*
RUN echo "<VirtualHost *:80>" > /etc/apache2/sites-enabled/default.conf
RUN echo "   DocumentRoot /var/www" >> /etc/apache2/sites-enabled/default.conf
RUN echo "   <IfModule dir_module>" >> /etc/apache2/sites-enabled/default.conf
RUN echo "      DirectoryIndex index.html" >> /etc/apache2/sites-enabled/default.conf
RUN echo "   </IfModule>" >> /etc/apache2/sites-enabled/default.conf
RUN echo "</VirtualHost>" >> /etc/apache2/sites-enabled/default.conf

RUN rm -r /var/www/html
RUN echo "<html><body>step1</body></html>" > /var/www/index.html
# expose
EXPOSE 80
EXPOSE 443

# volume
VOLUME /var/www
VOLUME /etc/apache2/sites-enabled

# cmd
CMD ["/usr/sbin/apache2","-D","FOREGROUND"]
et j'ai lancer la génération de l'image
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
docker build -t step1 - < step1.dockerfile
si je lance un container à partir de cette image, que je me connecte en intéractif sur le container je peux voir ce que contient le fichier /var/www/index.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
root@debian:~# docker run -d --name step1 step1
f46e9b20790d88c2abaf13ab01fac2da428dee4e9ec68fa3175b2845a27b8f22
root@debian:~# docker ps --all
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                    NAMES            
f46e9b20790d        step1:latest               "/usr/sbin/apache2 -   11 seconds ago      Up 10 seconds       80/tcp, 443/tcp          step1               
e76a731c732b        dockerui/dockerui:latest   "/dockerui"            23 hours ago        Up 5 hours          0.0.0.0:9000->9000/tcp   dockerui            
root@debian:~# docker exec -it f46e9b20790d bash
root@f46e9b20790d:/# cat /var/www/index.html 
<html><body>step1</body></html>
root@f46e9b20790d:/# exit
exit
la je suis plutôt content

je souhaite créer une image step2 (je sais je suis trop fort sur les noms) qui part de step1 pour modifier uniquement le fichier index.html.
mon dockerfile est le suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
FROM step1

RUN echo "<html><body>step2</body></html>" > /var/www/index.html
je build cette image sans soucis, mais quand je lance un container à partir de l(image step2 ... le résultat de la modification du fichier index.html n'est pas là

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
root@debian:~# docker run -d --name step2 step2
b27ec5c825a0c7a21af9f4e263c6787ff1336ac54a5c220973fefb1577c5d014
root@debian:~# docker ps --all
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                    NAMES
b27ec5c825a0        step2:latest               "/usr/sbin/apache2 -   7 seconds ago       Up 6 seconds        80/tcp, 443/tcp          step2               
f46e9b20790d        step1:latest               "/usr/sbin/apache2 -   11 seconds ago      Up 10 seconds       80/tcp, 443/tcp          step1               
e76a731c732b        dockerui/dockerui:latest   "/dockerui"            23 hours ago        Up 5 hours          0.0.0.0:9000->9000/tcp   dockerui            
root@debian:~# docker exec -it b27ec5c825a0 bash
root@b27ec5c825a0:/# cat /var/www/index.html
<html><body>step1</body></html>
root@b27ec5c825a0:/# exit
exit
et là je ne comprends pas ...

si je regarde l'history de step2 ... je retrouve bien toutes les étapes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@debian:~# docker history step2
IMAGE               CREATED             CREATED BY                                      SIZE
dc0fe4e04ce8        9 seconds ago       /bin/sh -c echo "<html><body>step2</body></ht   0 B
f6247af898c3        28 seconds ago      /bin/sh -c #(nop) CMD ["/usr/sbin/apache2" "-   0 B
42063c91344b        28 seconds ago      /bin/sh -c #(nop) VOLUME [/etc/apache2/sites-   0 B
3d0c42ed2fda        28 seconds ago      /bin/sh -c #(nop) VOLUME [/var/www]             0 B
e3dd7dd1d19f        29 seconds ago      /bin/sh -c #(nop) EXPOSE 443/tcp                0 B
49b95672822f        29 seconds ago      /bin/sh -c #(nop) EXPOSE 80/tcp                 0 B
18466547640a        29 seconds ago      /bin/sh -c echo "<html><body>step1</body></ht   32 B
1120cd3196a4        2 hours ago         /bin/sh -c rm -r /var/www/html                  0 B
6e70f415ecfb        2 hours ago         /bin/sh -c echo "</VirtualHost>" >> /etc/apac   131 B
8add5bb9ff04        2 hours ago         /bin/sh -c echo "   </IfModule>" >> /etc/apac   116 B
9365228096b9        2 hours ago         /bin/sh -c echo "      DirectoryIndex index.h   101 B
d9ff201a495f        2 hours ago         /bin/sh -c echo "   <IfModule dir_module>" >>   69 B
c9b9a6348471        2 hours ago         /bin/sh -c echo "   DocumentRoot /var/www" >>   44 B
782cf15b910a        2 hours ago         /bin/sh -c echo "<VirtualHost *:80>" > /etc/a   19 B
b056285a2805        2 hours ago         /bin/sh -c rm /etc/apache2/sites-enabled/*      0 B
51b3999c8bc5        2 hours ago         /bin/sh -c a2enmod ssl                          88 B
293eb96de689        2 hours ago         /bin/sh -c a2ensite default-ssl                 35 B
1a6556962390        2 hours ago         /bin/sh -c a2enmod proxy proxy_http             89 B
8c4c45c9defe        2 hours ago         /bin/sh -c #(nop) ENV APACHE_PID_FILE=/var/ru   0 B
324de6abdff1        2 hours ago         /bin/sh -c #(nop) ENV APACHE_LOCK_DIR=/var/lo   0 B
8b8923b66f72        2 hours ago         /bin/sh -c #(nop) ENV APACHE_LOG_DIR=/var/log   0 B
af4c51ba46dc        2 hours ago         /bin/sh -c #(nop) ENV APACHE_RUN_GROUP=www-da   0 B
3c1551344051        2 hours ago         /bin/sh -c #(nop) ENV APACHE_RUN_USER=www-dat   0 B
09fb83c58511        2 hours ago         /bin/sh -c if ! [ -d /var/lock/apache2 ]; the   0 B
d306813ad255        2 hours ago         /bin/sh -c if ! [ -d /var/log/apache2 ]; then   0 B
296dc34fdfed        2 hours ago         /bin/sh -c if ! [ -d /var/run/apache2 ]; then   0 B
eb6f3acebaee        2 hours ago         /bin/sh -c apt-get update && apt-get install    58.63 MB
a582cd499e0f        2 weeks ago         /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B
d8bd0657b25f        2 weeks ago         /bin/sh -c #(nop) ADD file:b5391cb13172fb513d   125.1 MB
je ne comprends donc pas pourquoi cela ne fonctionne pas ... quelqu'un pourrait m'aider à expliciter le fonctionnement ... merci