Connectez vous sur la machine virtuelle installée en première partie de la journée.
1 - Installez docker
$ sudo su
$ apt-get install docker.io
2 - Assurez vous que docker est correctement installé. Si c'est le cas, vous devriez avoir une sortie similaire à celle-ci:
$ docker info
Containers: 20
Running: 2
Paused: 0
Stopped: 18
Images: 70
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 153
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 3.779 GiB
Name: gallifrey
ID: RYUC:5OT6:3JFQ:APQG:QEW7:V7KP:ZDYY:WBBF:LZL5:PSFY:WFEH:MF6V
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No oom kill disable support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
Insecure Registries:
127.0.0.0/8
3 - Listez les commandes disponibles:
$ docker
4 - Listez les images disponibles localement
$ docker images
5 - Pullez l'image ubuntu
$ docker pull ubuntu
6 - Listez les images disponibles localement
$ docker images
7 - Lancez un echo "hello world!"
dans votre image ubuntu
$ docker run ubuntu echo "hello world"
8 - Listez tous les conteneurs. Pourquoi le conteneur est-il en status Exited
?
$ docker ps -a
9 - Pullez l'image brouberol/nginx
$ docker pull brouberol/nginx
10 - Lancez l'image brouberol/nginx
avec la commande suivante
$ docker run -it --rm --name=nginx-1 -p 80:80 brouberol/nginx
11 - Lancez un docker run --help
et tentez de comprendre les options passées dans la commande précédente
12 - Ouvrez un second terminal et ouvrez une session ssh dans votre VM
13 - Inspectez les conteneurs:
$ docker ps
Vous devriez avoir une sortie telle que
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76ee1a3f4ce2 brouberol/nginx "./entrypoint.sh" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp nginx-1
À quoi servait l'option -p 80:80
de la commande docker run
?
14 - Listez les ports hosts/conteneurs liés a votre conteneur via docker port <id>
(dans l'exemple précédent, <id>
vallait 76ee1a3f4ce2
).
15 - Interrogez votre conteneur nginx via curl localhost
16 - Recuperez l'IP publique de votre VM via ip -o -4 addr show eth0 | awk '{print $4}' | cut -d'/' -f 1
17 - Ouvrez votre navigateur et visitez http://<public_ip>
18 - Inspectez votre conteneur via la commande docker inspect
.
19 - Lancez la commande docker history --no-trunc brouberol/nginx
et tentez de comprendre la différence entre l'image nginx
de base et l'image brouberol/nginx
.
20 - Inspectez le Dockerfile et l'entrypoint utilisés via les commandes suivantes:
docker exec nginx-1 cat Dockerfile
docker exec nginx-1 cat entrypoint.sh
21 - À quoi sert docker exec
?
22 - Selon vous, pourquoi utilisons nous un exec
dans l'entrypoint? Indice: la commande docker stop
envoie un SIGTERM au process PID 1 du conteneur.
23 - Visitez https://hub.docker.com/explore/, et tentez de deployer une autre application officiellement supportée par Docker!
Comments