👋 Bienvenue sur ce tutoriel à la découverte de Docker. Retrouvez la vidéo sur la chaîne..
Image : Modèle et dépendances à partir duquel sera créé un ou des containers.
Container : Processus et toute ses dépendances virtuellement isolé
Dockerfile : Liste de commandes pour créer une image (voir section Dockerfile).
Docker deamon : Processus Docker en arrière plan qui gère images et containers.
Registry : Lieu d'échange et de stockage d'images (exemple : Docker Hub).
Bind-Mount : Système de persistance des données. Fait pointer un dossier du container vers un fichier ou dossier de l'hôte, vers l'extérieur du container.
docker <catégorie> <commande> <options>
docker
// Liste les commandes et les familles de commande
docker system info
// Affiche informations au sujet du système
docker image ls
// Liste les images (ou 'docker images')
docker image history myImage:0.0.0
// Voir les différentes "couches" qui constituent l'image
docker container -a ls
// Liste les containers, même inactif (ou 'docker ps -a')
docker pull hello-world
// Télécharge une image depuis docker-hub
docker create hello-world
// Crée un container depuis une image
docker start myContainer
// Démarre un container arrêté
docker run hello-world
// Raccourci 'docker pull' && 'docker create' && 'docker start'
docker exec
// Execute une commande dans un container
docker run -it --rm ubuntu bash
// Télécharge et lance ubuntu, execute bash interactif, supprime container aprés exécution
// -it = --interactive + --tty
docker volume create pgdata
// Crée un volume
docker run -v pgdata:/var/lib/postgresql/data postgres
// Fait persister données du container du dossier data dans volume pgdata
docker run --mount type=bind,source=c:/pgdata,target=/var/lib/postgresql/data postgres
// Fait persister données avec bind-mount
docker container stop myContainer
// Arrête container
docker rm [container id]
// Supprime container
docker rmi [image name]
// Supprime image
docker system prune
// Supprime container, images, réseaux et volume inutilisés
- Créer fichier
Dockerfile
&.dockerignore
- Décrire étape de création de l'image (utiliser référence)
docker build -t myname/myimage:0.1 .
FROM ubuntu:18.04
# Image de base
LABEL my.image.version="0.0.1"
# Donner un nom à votre image
RUN npm install
# Exécuter commandes
WORKDIR /usr/src/app
# Crée dossier si n'existe pas, cd dedans
COPY . /app
# Copie fichiers locaux dans container. Source | Destination
VOLUME /data
# Espace de stockage amener à être modifier (mount point)
EXPOSE 80
# Quel port du container doit être ouvert
ENV MY_VAR="Example"
# Variable d'environnement
ENTRYPOINT ["cmd", "param1", "param2"]
# Commande principale, mode exec, ne démarre pas le shell
CMD ["cmd", "param1", "param2"]
# Commande optionnel, modifiable avec 'docker run image CMD'
- Créer fichier
docker-compose.yml
- Décrire étapes de création du setup
- Démarrer l'environnement :
docker-compose up
- Le fermer :
docker-compose down
services:
app:
build: .
depends_on:
- postgres
environment:
DATABASE_URL: postgres://user:pass@postgres:5432/db
NODE_ENV: development
ports:
- "3000:3000"
postgres:
image: postgres:alpine
environment:
POSTGRES_PASSWORD: postgres
volumes:
- data:/var/lib/postgresql/data
volumes:
data: