22
0
Fork 0

HowtoDocker : ajout info pour utilisation avancée

This commit is contained in:
Romain Dessort 2018-04-10 12:19:49 -04:00
parent adaa85ba37
commit 747b4c07dd
1 changed files with 101 additions and 1 deletions

View File

@ -241,4 +241,104 @@ Dockerfile
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 4bea99cda08c 8 minutes ago 470MB
debian stretch 5b712ae16dd7 3 days ago 100MB
~~~
~~~
## Utilisation avancée
### Swarm
Swarm permet de mettre en communication plusieurs hôtes Docker afin d'en former
un cluster. On pourra ainsi déployer des applications multi-conteneurs sur
plusieurs machines.
Initialiser le cluster :
~~~
docker0# docker swarm init
~~~
Joindre les autres machines au cluster créé (il vous suffit généralement de copier-coller la commande retournée par `docker swarm init` :
~~~
docker1# docker swarm join --token <token> <IP du premier node>
~~~
Par défaut la machine sur laquelle le cluster a été initialisée a le rôle de
_manager_, et les suivantes ont le rôle de _worker_. On ne peut déployer de
nouveaux services que depuis les _managers_. Les _workers_ se contentent de
recevoir les services à rouler.
Pour ajouter des machines plus tard, il suffit de générer un nouveau token :
~~~
docker0# docker swarm join-token <manager|worker>
~~~
### Compose/stack
Docker permet de déployer des infrastructures multi-conteneurs (_stacks_) simplement à l'aide de `docker stack` (anciennement Docker Compose, logiciel tier). Il est très utile dans le cadre de déploiement sur un cluster Swarm.
L'infra est à décrire dans un fichier YAML.
Déployer (ou mettre à jour à chaud) une nouvelle _stack_ :
~~~
# docker stack deploy -c <stack_name.yml> <stack name>
~~~
Lister les _stacks_ :
~~~
# docker stack ls
~~~
Lister les _services_, toutes _stacks_ confondues ou pour une _stack_ donnée :
~~~
# docker service ls
# docker stack services <stack name>
~~~
Lister les _tasks_ (replicas) d'une _stack_ ou d'un _service donnée :
~~~
# docker stack ps <stack name>
# docker service ps <service name>
~~~
Supprimer une _stack_ :
~~~
# docker stack rm <stack name>
~~~
### Réseaux
Docker permet de gérer différentes topologies de réseaux pour connecter les conteneurs entre eux à l'aide de `docker network`.
_drivers_ réseau supportés :
- _bridge_ : utilise les bridges Linux ;
- _overlay_ : utilisé dans le cas d'un cluster Swarm, permet d'avoir un
réseau unique partagé entre tous les hôtes Docker et permet de faire du
load-balancing entre les conteneurs (replicas) d'un service ;
- _macvlan_ : permet d'assigner directement des adresses IP publiques aux
conteneurs, donc aucun NAT n'est fait contrairement aux précédents.
Créer un réseau :
~~~
# docker create -d <driver> […] <network name>
~~~
Lister les réseaux créés :
~~~
# docker network ls
~~~
Informations détaillées sur un réseau :
~~~
# docker network inspect <network name>
~~~