Sup Galilée
-
TP 2 Docker
Notation :
- TP à réaliser en groupe de 2 à 3 personnes MAX
- Des checkpoints sont inclus dans le TP à faire valider par le formateur
o Les réponses au différentes questions seront attendues
- Aucun rapport n’est exigé mais il est conseillé d’en réaliser un
msouvatdy@[Link]
Table des matières
1. Dockerfile ........................................................................................................................... 3
1.1. Votre premier Dockerfile............................................................................................. 3
1.2. Construction d’une image depuis le Dockerfile .......................................................... 4
1.3. Lancer un conteneur à partie de la nouvelle image ..................................................... 4
1.4. L’instruction CMD ...................................................................................................... 6
1.5. L’instruction ENTRYPOINT ...................................................................................... 7
1.6. L’instruction WORKDIR ............................................................................................ 8
1.7. L’instruction ENV ....................................................................................................... 9
1.8. L’instruction USER ................................................................................................... 10
1.9. L’instruction ADD ..................................................................................................... 11
1.10. L’instruction COPY ............................................................................................... 12
1.11. L’instruction LABEL ............................................................................................. 13
1.12. L’instruction ONBUILD ........................................................................................ 14
1.13. Les volumes docker ............................................................................................... 16
2. Déposer une image sur Docker Hub ................................................................................ 17
# Version: 0.1
FROM [Link]/ilkilabs/ubuntu:18.04
LABEL maintainer="ilkilab"
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' >/var/www/html/[Link]
EXPOSE 80
$ docker build -t="ur2p0/static_web" .
$ docker run -d -p 80 --name static_web ur2p0/static_web:v0.1 nginx -g "daemon off;"
$ docker port 9c718b925346
$ docker port 9c718b925346 80
$ docker port static_web
$ curl [Link]:32777
$ docker run -d -p [Link]:80:80 --name static_web ur2p0/static_web:v0.1 nginx -g "daemon
off;"
$ docker port static_web
$ curl [Link]:80
$ docker rm -f static_web
$ docker run -d -p [Link]::80 --name static_web ur2p0/static_web:v0.1 nginx -g "daemon
off;"
$ docker port static_web
$ curl [Link]:32769
$ docker run -i -t jamtur01/static_web /bin/bash
# Version: 0.2
FROM [Link]/ilkilabs/ubuntu:18.04
LABEL maintainer="ilkilab"
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' >/var/www/html/[Link]
CMD ["/bin/bash"]
EXPOSE 80
CMD ["/bin/bash", "-l"]
$ docker run -t -i mon_image /bin/ps
1) A quoi sert l’instruction ENTRYPOINT ?
2) Créer un Dockerfile avec le contenu suivant :
# Version: 0.3
FROM ur2p0/static_web:v0.2
ENTRYPOINT ["/bin/echo"]
ENTRYPOINT ["/bin/ps"]
CMD ["-aux"]
2)
$ vi Dockerfile
# Version: 0.1
FROM [Link]/ilkilabs/ubuntu:14.04
LABEL maintainer="ilkilab"
WORKDIR /etc
RUN mkdir new_folder
WORKDIR new_folder/
RUN touch hellotomynewfolder
WORKDIR toto/
# Version: 0.2
FROM ur2p0/ubu_test:v0.1
LABEL maintainer="ilkilab"
ENV TARGET_DIR /etc/new_folder
WORKDIR $TARGET_DIR
RUN mkdir new_folder2
2)
FROM ur2p0/ubu_test:v0.2
USER ilki
ENV TARGET_DIR /home/ilki
WORKDIR $TARGET_DIR
RUN touch a_third_file
FROM ur2p0/ubu_test:v0.3
ADD [Link] .
$ mkdir test_copy
$ cd test_copy
$ touch test_cp_file
$ cd ..
#Version 0.4
FROM ur2p0/ubu_test:v0.3
RUN mkdir copied_folder
COPY test_copy/ /home/ilki/copied_folder
CHECKPOINT N°3
$ vi Dockerfile
#Version 0.5
FROM ur2p0/ubu_test:v0.3
LABEL location="NANTES" type="ubuntu-server" role="web-server"
$ docker build -t="ur2p0/ubu_test:v0.5" .
$ docker run -t -i ur2p0/ubu_test:v0.5
$ docker ps
$ docker inspect cranky_noether
$ docker inspect --format='{{.[Link]}}' cranky_noether
map[location:NANTES role:web-server type:ubuntu-server]
$ cd ..
$ mkdir apache2
$ cd apache2
$ mkdir v1
$ cd v1
$ touch Dockerfile
$ vi Dockerfile
#Version 0.1
FROM [Link]/ilkilabs/ubuntu:14.04
LABEL maintainer="ilkilab"
RUN apt-get update && apt-get install -y apache2
LABEL location="NANTES" type="ubuntu-server" rôle="web-server"
ONBUILD RUN apt-get update
$ docker build -t="ur2p0/apache2" .
$ cd ..
$ mkdir v2
$ cd v2
$ touch Dockerfile
$ vi Dockerfile
#Version 0.1
FROM ur2p0/apache2
ENV APPLICATION_NAME webapp
$ docker build -t="ur2p0/webapp" .
Step 1/3 : FROM ur2p0/apache2
# Executing 1 build trigger...
Step 1/1 : RUN apt-get update
---> Running in 94d8b2435a68
$ mkdir /home/vagrant/partage
$ touch /home/vagrant/partage/monfichier_partage.txt
$ docker run -v /home/vagrant/partage:/opt -it ur2p0/ubu_test:v0.2
# ls /opt
3)
$ docker run --mount source=monpremiervolume,target=/opt -it ur2p0/ubu_test:v0.2
$ docker login
$ docker push ur2p0/webapp