Docker
Docker
Docker
Arnaud de
Nous sommes l’architecte Alcabas - 11/06/2019
vos infrastructures
Formateur: Arnaud Alcabas ([email protected])
Pod-cidr 172.18.X.0/24
La vision commerciale:
• Virtualisation d’OS
• Perception d’environnement isolé et indépendant
• Package déclaratif
• Unité de déploiement «universelle»
• Idéal pour le développement et les tests
La réalité:
• Les mêmes idées que la virtualisation, mais sans virtualisation
• Un « super chroot » s’appuyant sur les mécanismes kernel linux d’isolation
• Principe d'infrastructure consistante et répétable
• Faible overhead par rapport à une VM
• Syntaxe de la commande
– A l'ancienne:
• $ docker <command> <options> <image> <commande>
– Exemple:
• $ docker run hello-world
– Exemple:
• $ docker container run hello-world
• Session host
echo 1 > /proc/sys/net/ipv4/ip_forward
yum install bridge-utils –y • Session container
brctl add br0
C_PID=$(ps -ef | grep -m1 unshare | awk '{print $2}’) ip link set up dev veth0
ip link add veth0 type veth peer name veth0 netns $C_PID ip addr add 172.16.0.2/16 dev veth0
brctl addif br0 veth0 ip route add default via 172.16.0.1
ip link set up br0 ping 8.8.8.8
ip link set up veth0
ip addr add 172.16.0.1/16 dev br0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
ping 172.16.0.2
• Mais il est aussi possible de connecter un conteneur au réseau du host sans Namespace
(--network=host) ou sans réseau (--network=none)
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
ae7f1107b7a6 bridge bridge local
1dcfa3617b4e host host local
96b455c9e62f none null local
• Il est aussi possible de créer plusieurs réseau de type bridge avec des subnet différents
pour isoler certains conteneurs et d’ajouter plusieurs « NIC » à un conteneur en
multipliant les flag --network lors du docker run.
• Volumes nommés :
– $ docker volume create --name dataVolume
– $ docker run -t -i -v dataVolume:/data:rw ubuntu /bin/bash
https://docs.docker.com/engine/reference/builder/
Nous sommes l’architecte de vos infrastructures
Demo bottom ➔ up
• Build d’un rootfs centos
cat > chroot-centos7.repo << EOF
[centos7-chroot-base]
name=CentOS-7-Base
baseurl=http://mirror.centos.org/centos/7/os/x86_64
gpgcheck=0
[centos7-chroot-epel]
name=Extra Packages for Enterprise Linux 7
baseurl=http://dl.fedoraproject.org/pub/epel/7/x86_64
gpgcheck=0
EOF
mkdir test
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test go 8765259e19c2 About a minute ago 7.53MB
golang latest 1ef078f0da9e 12 hours ago 774MB
alpine latest 055936d39205 4 weeks ago 5.53MB