1. DOCKER VS VM
2. CONSTRUIRE MANUELLEMENT UNE IMAGE PHP7
3. LANCER SCRIPT PHP 7 EN MODE CONSOLE VIA DOCKER
4. LANCER SCRIPT PHP 7 EN MODE WEB VIA DOCKER
5. AUTOMATISER LE BUILD D’UNE IMAGE DOCKER
6. ORCHESTRER LES CONTAINERS
7. LOAD BALANCER 2 CONTAINERS WEB
8. UTILISER LES IMAGES DE LA COMMUNAUTÉ
-------
1. DOCKER VS VM
2. MANUALLY BUILD A PHP7 IMAGE
3. START SCRIPT PHP 7 IN CONSOLE MODE VIA DOCKER
4. LAUNCH SCRIPT PHP 7 IN WEB MODE VIA DOCKER
5. AUTOMATING THE BUILD OF A DOCKER IMAGE
6. ORCHESTRATING CONTAINERS
7. LOAD BALANCEOR 2 WEB CONTAINERS
8. USER IMAGES OF THE COMMUNITY
1. NOS OBJECTIFS
ORCHESTRER LES
CONTAINERS
DOCKER VS VM
LANCER SCRIPT PHP 7 EN
MODE CONSOLE VIA
DOCKER
AUTOMATISER LE BUILD
D’UNE IMAGE DOCKER
LANCER SCRIPT PHP 7 EN
MODE WEB VIA DOCKER
LOAD BALANCER 2
CONTAINERS WEB
A la découverte de
docker
CONSTRUIRE
MANUELLEMENT UNE
IMAGE PHP7
UTILISER LES IMAGES
DE LA COMMUNAUTÉ
4. C’est l’émulation des composants matériels d’une machine afin d’y exécuter un système d'exploitation dédié
dans lesquels nous pourrons y exécuter des applications.
composants matériels : disque dur, mémoire vive, carte graphique, etc.
machine : pc, gameboy, etc.
Le terme technique du logiciel permettant de virtualiser une machine entière est “hyperviseur”.
Les logiciels comme Vmware, VirtualBox, QEMU sont des hyperviseurs.
5. Pourquoi Docker n’est pas une machine virtuelle ?
● Docker n’émule pas les composants d’une machine
● Docker ne fait pas tourner de système d’exploitation
7. Docker est un gestionnaire de container.
Il lance des processus dans des containers dont il isole les ressources grâce à
la fonctionnalité LXC du noyau Linux.
8. Mais alors qu’est-ce que ce fameux LXC ?
LXC repose sur la notion de groupes de contrôle Linux, les cgroups. Ici,
chaque groupe de contrôle offre aux applications une isolation totale des
ressources (notamment processeur, mémoire et accès E/S), et ce sans
recourir à des machines virtuelles à part entière.
Les conteneurs Linux proposent également une isolation complète de leur
espace de noms. Les fonctions telles que les systèmes de fichiers, les ID
réseau et les ID utilisateur, ainsi que tout autre élément généralement
associé aux systèmes d'exploitation, peuvent donc être considérés comme
« uniques » du point de vue de chaque conteneur.
9. C’est pour cela que Docker ne fonctionne pas sur Windows car il a besoin de la
fonctionnalité d’isolation que propose le noyau Linux au travers de LXC.
Ainsi pour utiliser Docker depuis un environnement Windows, il faut tout d’abord
créer une machine virtuelle qui fera tourner un système Linux dans lequel Docker
pourra s'exécuter.
18. 1ère étape)
Je démarre un container
à partir de l’image
d’Ubuntu et j’y installe
PHP7
docker run -it ubuntu:latest /bin/bash
apt-get update
apt-get install php
php -v
exit
19. 2ème étape)
Je commit mon container
pour en faire une image
docker ps -a
docker commit [containerid] myphp:7.0
27. 1ère étape)
Je définis les étapes du
build
# in file docker/php7/Dockerfile
FROM ubuntu:latest
RUN
DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get install -y php
WORKDIR /app
CMD php -S 0.0.0.0:80
30. 1ère étape)
Je définis la configuration
avec laquelle seront
lancés mes containers
# in file docker/docker-compose.yml
web:
container_name: web
image: myphp:7.0
ports:
- '80:80'
volumes:
- '$PWD/web:/app'
31. 2ème étape)
Je lance mes containers
docker-compose -f
docker/docker-compose.yml up
33. Créer une image nginx et l’utiliser pour en faire un loadBalancer qui
équilibrera la charge entre 2 instances de notre container PHP7.
LOAD BALANCER 2 CONTAINERS WEB
34. 1ère étape)
Je définis les étapes du
build
# file docker/lb/Dockerfile
FROM ubuntu:latest
RUN
DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get install -y
nginx
CMD nginx -g 'daemon off;'
35. 2ère étape)
Je build l’image du
loadbalancer
docker build docker/lb -t lb:latest
36. 3ème étape)
Je définis la configuration
avec laquelle seront
lancés mes containers
# in file docker/docker-compose.yml
web1:
image: myphp:7.0
volumes:
- '$PWD/web:/app'
web2:
image: myphp:7.0
volumes:
- '$PWD/web:/app'
lb:
image: lb:latest
volumes:
- '$PWD/docker/lb/default:/etc/nginx/sites-enabled/default'
links:
- web1:web1
- web2:web2
ports:
- '80:80'
37. 4ème étape)
Je définis la configuration
avec laquelle seront
lancés mes containers
# in file docker/lb/default
upstream myapp {
server web1;
server web2;
}
server {
listen 80;
location / {
proxy_pass http://myapp;
}
}
38. 5ème étape)
Je lance mes containers
docker-compose -f
docker/docker-compose.yml up