Skip to content

Antoine-Flo/tuto-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tutoriel Docker

👋 Bienvenue sur ce tutoriel à la découverte de Docker. Retrouvez la vidéo sur la chaîne..


📖 Terminologie

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.


💻 Commandes

Structure d'une commande

docker <catégorie> <commande> <options>

Naviguer

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')

Executer

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

Volume

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 

Arrêter / Supprimer

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

📁 Dockerfile

Etapes

  1. Créer fichier Dockerfile & .dockerignore
  2. Décrire étape de création de l'image (utiliser référence)
  3. docker build -t myname/myimage:0.1 .

Référence

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'

🕸 docker-compose

Etapes

  1. Créer fichier docker-compose.yml
  2. Décrire étapes de création du setup
  3. Démarrer l'environnement : docker-compose up
  4. Le fermer : docker-compose down

Exemple

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:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published