Thibault Coupin
§id:sommaire§;
§id:rappels§;
On lance les conteneurs avec la commande ?
$ docker container run [OPTS] IMAGE [CMD] §fragment
On gère les volumes aves les commandes ?
$ docker volume create [OPTS] §fragment
$ docker volume ls
$ docker volume rm VOLUME_NAME
On gère les réseaux avec les commandes ?
$ docker network create ... §fragment
$ docker network connect ...
$ docker network ls ...
$ docker network disconnect ...
$ docker network rm ...
Imaginez la complexité pour déployer un CMS comprenant :
§id:concepts§;
Docker-compose permet de définir tous les éléments nécessaires pour faire tourner une application multi-conteneurs.
L’application est définie dans un fichier au format YAML avec 3 sections principales :
Plus de détails dans la partie docker-compose.yml
§id:yaml§;
YAML Ain’t Markup Language
Un langage facilement lisible reprenant les concepts de XML ou JSON
services:
some-service:
networks:
some-network:
aliases:
- alias1
- alias3
other-network:
aliases:
- alias2
aux espaces !
Plusieurs sections :
§icon:warning§; Pas de section dans la v1.0 §fragment
Le modèle du docker-compose.yml a plusieurs versions possibles.
Compose file format | Docker Engine |
---|---|
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
1.0 | 1.9.1.+ |
§pelement:style=background-color:white§;
Permet de définir les éléments composant l’application :
Tous les détails sur la doc.
Quelle est la base du conteneur ?
image: httpd:alpine
build: ./path
# ou
build:
context: ./path
dockerfile: monDockerFile
args:
...
Montage des volumes Docker ou host
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Specify an absolute path mapping
- /opt/data:/var/lib/mysql
# Path on the host, relative to the Compose file
- ./cache:/tmp/cache
# User-relative path
- ~/configs:/etc/configs/:ro
# Named volume
- datavolume:/var/lib/mysql
Branchement des réseaux et exposition de ports sur la machine hôte
services:
some-service:
networks:
- some-network
- other-network
ports:
- "80:80" #Bien mettre les guillemets
Docker-compose démarre les conteneurs dans le bon ordre à condition qu’il le connaisse…
depends_on:
- service1
- service2
Pour surcharger la commande par défaut, on utilise le paramètre command
command: some command && some other
Tous les détails sur la doc.
volumes:
monvolume:
monsecondvolume:
driver: toto
Tous les détails sur la doc.
networks:
monreseau:
ipam:
config:
- subnet: 192.168.91.1/24
ip_range: 192.168.91.0/25
gateway: 192.168.91.1
§id:cli§;
On lance l’application avec la commande
$ docker-compose up [SERVICE]
L’option -d
permet de lancer les conteneurs en arrière-plan.
Gestion des conteneurs
$ docker-compose stop [SERVICE]
$ docker-compose kill [SERVICE]
$ docker-compose scale SERVICE=NB
Nettoyage des conteneurs stoppés
$ docker-compose rm
Nettoyage des éléments
$ docker-compose down
docker-compose help
ou
Compose command-line reference