IOT - TD : Introduction à Docker et Docker-Compose

Thomas S.

2017-2018

IOT - TD : Introduction à Docker et Docker-Compose

Sommaire

  • Un docker pour les gouverner tous
  • Un docker compose pour les maîtriser tous

Un docker pour les gouverner tous

Histoire et pourquoi

  • Créé en 2013 par Solomon Hykes
  • Open Source, gratuit
  • Support (du meilleur au pire) : Linux > Mac > Microsoft
  • Architecture : X86 - AMD64 - ARM (RPi)
  • Virtualiser l'environnement du logiciel : Un container

Un docker pour les gouverner tous

Installation

C'est par ici : Debian ou Ubuntu.

Un docker pour les gouverner tous

Dockerfile

Permet de créer un environnement pour un logiciel. Plus de détails ici : Dockerfile référence.
Quelques commandes : FROM, RUN, VOLUME, COPY, ADD, WORKDIR, EXPOSE et CMD

Un docker pour les gouverner tous

FROM, RUN, VOLUME, EXPOSE

FROM : Base de l'environnement, permet de se baser sur un container existant. Voir Docker Hub;
RUN : Éxécute une commande shell lors de la construction du container;
VOLUME : Fichers/Dossiers partagés entre la machine et le container;
EXPOSE : Ports réseaux ouverts du container vers la machine hôte (mapping).

Un docker pour les gouverner tous

COPY, ADD, WORKDIR, CMD

COPY : Copie un dossier de l'hôte vers le container à la construction;
ADD : Comme COPY, mais la source peut être une URL ou une archive à dézipper si le format est connu;
CMD : Commande que le container doit éxécuter;
WORKDIR : Dossier de travaille du container (en général, racine de l'éxécutable).

Un docker pour les gouverner tous

Exemple

Un docker pour les gouverner tous

Commande Docker

  • docker build -t TAG . : Construit un Dockerfile,
  • docker ps : Permet de connaître les containers lancés,
  • docker run -t -i NOM : Lance un container,
  • docker rm NOM : Éteint un container,
  • docker images : Liste les containers disponibles,
  • docker rmi IMAGE : Supprime une image.

Un docker compose pour les maîtriser tous

Docker compose

  • Créé par Docker
  • Faciliter gestions des containers
  • Pseudo Micro Orchestrateur
  • Un script : docker-compose.yml

Un docker compose pour les maîtriser tous

Installation

C'est par ici : Multi-OS.

Un docker compose pour les maîtriser tous

Bases

Le script docker-compose.yml comporte 3 parties (en général) :

  • version : Version de Docker-Compose ( aujourd'hui : 3 ) → version: '3'
  • services : Containers à éxécuter;
  • volumes : Volumes pour la persistance (non mapper sur l'host).

Un docker compose pour les maîtriser tous

Services - À partir d'un Dockerfile

Services - À partir d'une image

Un docker compose pour les maîtriser tous

Configurations

environment : Variables d'environnement spécifiques au container

ports : Ports ouverts de l'hôte depuis le container

Un docker compose pour les maîtriser tous

Configurations

devices : Permet de connecter des /dev

Un docker compose pour les maîtriser tous

Configurations

depends_on/links : Dépendances des containers
Accès de PHP vers la database : pdo://db:3306

Un docker compose pour les maîtriser tous

Configurations

volumes : Mappage des volumes

Un docker compose pour les maîtriser tous

Plus loin

  • restart : Ce qu'il faut faire en cas de fermeture;
  • container_name : Nom du container;
  • command : Réécriture de CMD dans Dockerfile;
  • Encore plus

Un docker compose pour les maîtriser tous

Exemple

Un docker compose pour les maîtriser tous

Commandes

  • docker-compose build : Construit les containers;
  • docker-compose up : Met en route les Dockers, alloue les volumes;
  • docker-compose start : Après up puis CTRL+C, relance les containers;
  • docker-compose stop : Arrête containers;
  • docker-compose down : Supprime les containers (MAIS PAS les volumes);
  • docker-compose logs -f : Voir les logs.
Dernière maj : Voir Github 🐻 1 /
Précédent
Suivant