Docker notes
Dockerfile est un script de commandes utilisé pour assembler une image Docker
Compose permet de définir et d’exécuter des applications multi-conteneurs.
Dockerfile
Un Dockerfile
est un plan en texte brut englobant toutes les directives de construction d’une image Docker. Cette image sert de base pour l’exécution de code dans un conteneur Docker.
Lorsqu’un utilisateur lance la commande Docker run avec une application spécifiée, comme WordPress, Docker exploite les instructions du Dockerfile
pour assembler l’image, garantissant ainsi une exécution transparente du conteneur.
instructions
FROM
: indique l’image de départ sur laquelle on va se baser. (appeler une seule fois)RUN
: Exécute une commande pour contribuer à la construction de votre image.ADD
: permet d'ajouter des fichiers dans le conteneurWORKDIR
: permet de définir le répertoire de travailEXPOSE
: Ouvre un ou plusieurs ports par défaut du réseau.VOLUME
: Crée un point de montage.COPY
: Ajoute un fichier dans l’image.LABEL
: Ajoute des métadonnées à l’image dans un format clé/valeur.ENV
: Définit une variable d’environnement.CMD
: Définit la commande à exécuter lors du lancement de l’image. Peut également être utilisé pour définir l’argument par défaut de l’instructionENTRYPOINT
- ENTRYPOINT: Détermine l’exécutable qui doit être lancé au démarrage du conteneur.
- Utilisez
CMD
pour passer des options à cet exécutable.
Compose
Conçu pour définir et orchestrer des applications multi-conteneurs, facilitant ainsi les configurations d’applications complexes. Il utilise des fichiers YAML pour définir les services et les réseaux, ce qui rend les configurations plus simples et lisibles par l’homme.
De plus, Docker Compose prend en charge la mise à l’échelle des services à la fois horizontalement et verticalement, répondant ainsi à la demande d’applications plus robustes. De plus, il permet la réplication du même environnement à différentes étapes du cycle de vie de l’application (développement, test, transfert et production).
Configurer les services, les réseaux et les volumes de votre application.
Une STACK
est un ensemble de conteneur docker lancé via un docker compose
Commandes
Docker compose up
- Permet de démarrer l'ensemble des conteneurs en arrière-plan docker-compose up -d - Statut d'une stack docker compose: docker-compose ps - Voir les logs d'une stack docker composer docker-compose logs -f --tail 5 - Stopper une stack docker composer docker-compose stop - Détruire la stack (les ressoruces crées) docker-compose down - Valider une stack (syntax) du fichier docker-composer.yml docker-compose config
Exemples compose.yml
Déclarer un service et son image
services: service1: (ex db ou database) image: (ex: mysql:5.7) ou build: chemin vers un DockerFile volumes: - db_data:/var/lib/mysql (emplacement des datas) ou /data/mysql:/var/lib/mysql restart:always environment: MYSQL_ROOT_PASSWORD:rootpass MYSQL_DATABASE:test MYSQL_USER:usertest MYSQL_PASSWORD:userpass autre_service: depends_on: - service1 image: wordpress:lastest ports: -"8000:80" restart:always environment: WP_DB_HOST:service1:3306 WP_DB_NAME:test WP_DB_USER:usertest WP_DB_PASSWORD:userpass volumes: db_data:{}
image: permet de spécifier l'image source pour le conteneur build: permet de spécifier le DockerFile source pour créer l'image du conteneur volume: permet de spécifier les points de montage entre ke système hôte et les conteneurs restart: permet de définir le comportement du conteneur en cas d'arrêt du processus environnement: permet de définir les variables d'env depends-on: permet de dire que le conteneur depend d'un autre conteneur ports: permet de définir les pots disponibles en la machine hôte et le conteneur