Skip to content

Instantly share code, notes, and snippets.

@tgermain
Last active January 25, 2019 16:05
Show Gist options
  • Save tgermain/7edcd9793787bad1ac945f15c1d20043 to your computer and use it in GitHub Desktop.
Save tgermain/7edcd9793787bad1ac945f15c1d20043 to your computer and use it in GitHub Desktop.
docker TP

Connectez vous sur la machine virtuelle installée en première partie de la journée.

1 - Installez docker using the convenient script ( https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-convenience-script ).

$ wget -q get.docker.com -O- | sh	

2 - Assurez vous que docker est correctement installé. Si c'est le cas, vous devriez avoir une sortie similaire à celle-ci:

$docker info
Containers: 4
 Running: 3
 Paused: 0
 Stopped: 1
Images: 1
Server Version: 17.09.0-ce
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3kB
 Base Device Size: 10.74GB
 Backing Filesystem: xfs
 Data file: 
 Metadata file: 
 Data Space Used: 280MB
 Data Space Total: 20.51GB
 Data Space Available: 20.23GB
 Metadata Space Used: 167.9kB
 Metadata Space Total: 213.9MB
 Metadata Space Available: 213.7MB
 Thin Pool Minimum Free Space: 2.051GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.110 (2015-10-30)
Logging Driver: journald
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.4.76-ovh-vps-grsec-zfs-classid
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 6.639GiB
Name: agent-client-tst1-b2-7-5
ID: ISGV:37UI:XOUS:BWOW:UPT5:O45M:72RR:JDUR:HISK:ZTZ6:2EHH:ZIQD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

3 - Listez les commandes disponibles:

$ docker

4 - Listez les images disponibles localement

$ docker images

5 - Pullez l'image ubuntu

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
660c48dd555d: Pull complete 
4c7380416e78: Pull complete 
421e436b5f80: Pull complete 
e4ce6c3651b3: Pull complete 
be588e74bd34: Pull complete 
Digest: sha256:7c67a2206d3c04703e5c23518707bdd4916c057562dd51c74b99b2ba26af0f79
Status: Downloaded newer image for ubuntu:latest

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 seconde 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
1d4fcd21776e        brouberol/nginx     "./entrypoint.sh"        17 seconds ago      Up 16 seconds       0.0.0.0:80->80/tcp, 443/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 1d4fcd21776e).

15 - Interrogez votre conteneur nginx via curl localhost

16 - Recuperez l'IP publique de votre VM via curl ifconfig.ovh

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment