Docker Koikecé ?
Des outils pour
gérer / héberger /
distribuer tout ça
Un processus pour
créer ces images
Docker : le docker file
Un format
standardisé pour
stocker ces fichiers :
une image Docker
Namespaces +
Cgroups + FS
Slide 13
Slide 13 text
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
Dockerfile
Slide 14
Slide 14 text
Docker Image
85777c03b72554cd08e721b6148dc27d2a50a7a6 FROM ruby:2.3.3
7c0a25c06ea30bae50e39a37a5997e31a1a96e20 ADD . /myapp
8af56de68279cb6f5ed022f31af18b9fcdcc2e92 RUN bundle install
4b17286a2bb954e9d04c0880a911b8be10133ba3 RUN apt-get update …
fa9f22e62229ac79ecee117c88192ee717a9e178 RUN mkdir /myapp
Slide 15
Slide 15 text
Registry
Stockage : fichiers,
S3, GCS, …
Registry
API HTTP
Implémentation en Go fournie par Docker
Aussi par de nombreux services :
Quay, AWS, Google Cloud, Gitlab, …
Slide 16
Slide 16 text
Filesystem
Thin layer (RW)
Read only
FS: AUFS/ZFS/BTRFS/devicemapper/…
Slide 17
Slide 17 text
Le réseau
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
c62a2b9ada4a host host local
46645ba306f4 none null local
8d5bf75ef245 bridge bridge local
Slide 18
Slide 18 text
None
$ docker run --net none busybox ip addr
1: lo: mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
Slide 19
Slide 19 text
Host
$ docker run --net host busybox ip addr
1: lo: mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: mtu 1500 qdisc qlen 1000
link/ether 90:e6:ba:4e:a3:09 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global br0
inet6 fe80::3509:a6c7:278:2780/64 scope link
3: docker0: mtu 1500 qdisc noqueue
link/ether 02:42:47:61:4a:e3 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
Slide 20
Slide 20 text
Bridge
$ docker run --net bridge busybox ip addr
1: lo: mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
26: eth0@if27: mtu 1500 qdisc
noqueue
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
inet6 fe80::42:acff:fe11:2/64 scope link tentative
$ docker run -—net bridge busybox ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.147 ms
64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.068 ms
Slide 21
Slide 21 text
Port forwarding
$ echo test | nc 192.168.0.10 4000
$ docker run -p 4000:3000 -ti busybox nc -l -p 3000
test
Slide 22
Slide 22 text
Volumes
$ mkdir testmount
$ touch testmount/toto.txt
$ docker run -v /home/test/testmount:/app busybox ls -l /app
-rw-r--r-- 1 1000 1000 0 Oct 11 20:44 toto.txt
Exemple : monter un dossier du host
Pour les données persistantes
Slide 23
Slide 23 text
Volumes
Beaucoup de plugins :
• NFS
• Persistent volumes (AWS, Google Cloud, Azure, …)
• DBRB
• …
Slide 24
Slide 24 text
Containerd / runc
• Interfaces claires pour lancer des containers
• Projets indépendantes de Docker (Open Container
Initiative)
Slide 25
Slide 25 text
Au final …
• Utilisation de fonctionnalités existantes du Kernel
• Mais avec des interfaces définies et des outils pour
simplifier
• Une vraie volonté de standardisation et de découpage
Slide 26
Slide 26 text
Nouvelles
problématiques
Slide 27
Slide 27 text
Création et maintenance
• Nouvelle version de l’application
• Changement d’une image dont on dépend
• Failles de sécurité
Slide 28
Slide 28 text
Création et maintenance
• Automatisation de la création des containers
• Gestion des dépendances
• Rebuild périodique
• Déploiement automatique
• Sécurité
• Clair (analyse statique)
• Docker Bench for Security (config, host)
Société
Produit entreprise
Avec version communautaire
Inventeur du format
Initiateur du mouvement
Slide 34
Slide 34 text
Issu de Docker
Regroupe toutes leurs briques Open
Source sous un même nom
Slide 35
Slide 35 text
Fait partie de la Linux
Foundation
S’occupe de la gouvernance,
communication, fournit des
fonds et des ressources
Héberge Kubernetes, Prometheus,
Fluentd, containerd, rkt, …
Slide 36
Slide 36 text
Container Linux
Hébergement Kubernetes (Tectonic)
Quay : Registry
ETCD