SlideShare une entreprise Scribd logo
Docker, mais qu’est-ce que
c’est ?
Introduction à Docker et son écosystème
Qui suis-je ?
Julien Maitrehenry
DevOps, Cloud Architect, Développeur
Co-fondateur @Kumojin
Kumojin.com
Github.com/jmaitrehenry
jmaitrehenry.ca
Agenda
• Qu’est-ce que Docker ?
• Docker Compose
• Orchestration
• Docker Desktop
• Questions ?
Photo by Ian Taylor on Unsplash
Qu’est-ce
que Docker ?
Mais que
signifie
« Docker » ?
• Le projet d’une communauté Open Source
• Les outils issus de ce projet
• L’entreprise Docker inc.
Mais à quoi
ça sert ?
Au commencement
• Un seul but
• Communauté des développeurs
sous linux seulement
• Un gros binaire
Et maintenant ?
• Linux et Windows
• Multi Architecture (intel, armv5-8, ppc, i386)
• Docker utilise plusieurs composants séparés
• Standardisation des composants (OCI, CNCF)
• Adopté par une large majorité des clouds
Qu’est-ce qu’un
conteneur ?
• Un espace isolé où s’exécute une application
• L’espace isolé contient toutes les libs pour
rouler son application
• Possède sa propre stack réseau, ses users, ses
processus
• Partage le kernel de l’hôte
• Peut avoir des restrictions sur l’utilisation des
ressources (CPU, Ram, etc)
En quoi c’est différent d’une VM ?
Comment
créer un
conteneur ?
Qu’est-ce
qu’une
image?
• Un ensemble de couche
• Chaque couche est immutable
• Chaque couche est réutilisable
Construisons une image docker
Image de base
Variable d’environnement
Variable définie lors du build
Dossier de travail – alias dossier courant
Copie de fichiers dans l’image
Commande executée lors du build
Copie du dossier dans l’image
Commande par défaut qui sera
executée lors d’un docker run
Comment transformer notre fichier en image ?
❯ docker build -t myapp:v1.0.0 --build-arg NODE_ENV=development .
Commande pour construire une image
Donner un nom et un tag à l’image
Passer une variable de build
Contexte du build
Si le fichier Dockerfile porte un autre nom ou est situé ailleurs, il faut le spécifier avec :
-f .docker/Dockerfile
Attention : le contexte de build est toujours le dernier paramètre
Comment lancer un conteneur ?
- Je ne peux pas accéder à l’app depuis mon navigateur
- Ctr+C n’arrête pas l’app
- Le nom du conteneur va être généré aléatoirement (ex: goofy_kapitsa)
❯ docker run myapp:v1.0.0
Commande pour exécuter un container Nom de l’image et son tag
Comment lancer un conteneur ?
❯ docker run –ti -p 8080:80 --name myapp myapp:v1.0.0
Exécute en mode intéractif et avec un tty
Lie le port 80 du container au port 8080 du host
Donne le nom myapp au container
Comment lancer un conteneur ?
❯ docker run –d -p 8080:80 --name myapp myapp:v1.0.0
Lance le container en arrière plan
❯ docker run –ti –p 8080:80 --name myapp --rm myapp:v1.0.0 bash
Supprime automatiquement le conteneur quand il sera arrêté
Change la commande par défaut (CMD)
Recap
Docker Engine
• Application Client-Server pour:
• Gérer des images
• Gérer des conteneurs
• Gérer des réseaux
• Gérer des volumes
• Possède une API REST et un CLI
Volume
• Conserver des données en dehors du
conteneur
• Partager des données avec l’hôte
• D’autres drivers possibles
This Photo by Unknown Author is licensed under CC BY-SA-NC
Partager un dossier/fichier entre le host et le conteneur
❯ docker run -ti --rm -v `pwd`/mydir:/data ubuntu
Instruction pour utiliser un volume
Dossier local sur l’host Dossier dans le conteneur
Attention dans le cas où l’on monte un fichier !
Les modifications au fichier peuvent ne pas être reflétées dans le conteneur
Ex: sed, vim, etc
Utilisation d’un volume
❯ docker volume create mydata
❯ docker run -ti --rm -v mydata:/data ubuntu
Sous commande pour gérer les volumes Nom du volume
Nom du volume au lieu du path local
Network
• Permet de créer des réseaux isolés
• Les conteneurs peuvent communiquer entre
eux par nom de container, id ou alias
• Plusieurs drivers disponibles :
• Bridge (default)
• Internal
• None
• Host
Internal network
❯ docker network create --internal intnet
❯ docker run --network intnet curlimages/curl -m3 https://google.com
╰─❯ curl: (28) Resolving timed out after 3002 milliseconds
Sous commande pour gérer les réseaux Type de réseau Nom du réseau
Attache le conteneur au réseau intnet
Communication intra conteneur
❯ docker network create --driver bridge mynet
❯ docker run -d --network mynet --name nginx --network-alias web nginx
❯ docker run --rm --network mynet curlimages/curl -m3 http://web
Utilise un driver réseau sécifique
Ajoute un alias au conteneur dans les réseaux où il est connecté
Le nom et l’ID du conteneur fonctionne aussi
Autres réseaux utiles
❯ docker run --rm --network none curl -m3 https://google.com
❯ docker run –d --network host nginx
Sans isolation réseau entre le conteneur et l’hôte
Sans réseau
Docker
Compose
Construisons un fichier docker compose
Version du format du fichier
Définition des services, alias des conteneurs
Définition des réseaux
Définition des volumes
Construisons un fichier docker compose
Nom du service ainsi que de son nom sur les réseaux
Image docker du conteneur
Si le containeur crash, docker le relance
Liste des volumes à attacher au conteneur
Liste des variables d’environnement
Liste des réseaux à attacher au conteneur
Construisons un fichier docker compose
Surcharge de la commande par défaut de l’image
On peut attacher un volume dans un dossier d’un autre volume
Définition pour construire l’image Docker
Créer une dépendance à un autre service
Liste des ports à lier sur le host
Construisons un fichier docker compose
Sur un réseau séparé de la base de données
Comment utiliser un un fichier compose ?
❯ docker compose ps -a
Liste les conteneurs créer par compose Incluant ceux arrêtés
❯ docker compose logs -f [nom du/des service(s)]
Affiche les logs Et affiche les nouveaux messages au fur et à mesure
❯ docker compose up –d [nom du/des service(s)]
Sous commande pour gérer compose Lance un/des services/tous les services
En background
Registry Docker
• Héberge les images Docker
• Nombreux Registry en ligne disponibles:
• Docker Hub
• Azure ACR
• AWS ECR
• Github Registry
• …
• Nombreuses solutions self-hosted:
• Docker Registry
• Nexus
• Artifactory
• …
Commandes utiles
❯ docker login / docker login kumojin.azurecr.io
Connecte Docker à un registry
Télécharge une image dans un registry
Pousse une image du registry localement
❯ docker push jmaitrehenry/myimage
❯ docker pull kumojin.azurecr.io/myapp/api:v1.0.0
Se connecte à un registry spécifique
Orchestration
• Pourquoi faire ?
• Outils d’orchestration
• Solutions cloud
Pour quoi
faire ?
• Approvisionnement et placement des
containeurs
• Mécanisme de healthcheck et métriques
• Gestion des indisponibilités et scalabilité
• Gestion des déploiements
• Service discovery et gestion du réseau
• Et plus encore !
Outils d’orchestration
Solutions
Cloud
• Basé sur Kubernetes
• Azure: AKS
• AWS: EKS
• Google: GKE
• Basée sur des conteneurs
• Azure ACI
• AWS Fargate
• AWS ECS
Docker
Desktop
Qu’est-ce que c’est ?
Qu’est-ce que cela apporte ?
Questions ?

Contenu connexe

Tendances

DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
Stephane Manciot
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
Juneyoung Oh
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
TADx
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
sdenier
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Phuc Nguyen
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
DuckDuckGo
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
Kiwi Backup
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Instruqt
 
Intro docker
Intro dockerIntro docker
Intro docker
Fedir RYKHTIK
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
fazalraja
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
John Willis
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
Ravindu Fernando
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
Yajushi Srivastava
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
Docker, Inc.
 
Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
Docker, Inc.
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
Nguyen Van Vuong
 
Vulgarisation de la technologie de containers Docker
Vulgarisation de la technologie de containers DockerVulgarisation de la technologie de containers Docker
Vulgarisation de la technologie de containers Docker
Florian Bobin
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
Bangladesh Network Operators Group
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Luong Vo
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
Dr. Syed Hassan Amin
 

Tendances (20)

DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
 
Vulgarisation de la technologie de containers Docker
Vulgarisation de la technologie de containers DockerVulgarisation de la technologie de containers Docker
Vulgarisation de la technologie de containers Docker
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
 

Similaire à Docker, mais qu’est-ce que c’est ?

Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
Nicolas Muller
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Ludovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
amine17157
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
adri1s
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
Nizar GARRACHE
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
jean pasqualini
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
AbdellahELMAMOUN
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Silicon Comté
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
AbdellahELMAMOUN
 
Prise en main de Docker
Prise en main de DockerPrise en main de Docker
Prise en main de Docker
BakeliMarketingTeam
 
A la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partie
Samuel Desseaux
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
Boubker ABERWAG
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
Nicolas Hennion
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
Pascal Ponzoni
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
AnisSalhi3
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 

Similaire à Docker, mais qu’est-ce que c’est ? (20)

Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Docker nice meetup #1   construire, déployer et exécuter vos applications, ...Docker nice meetup #1   construire, déployer et exécuter vos applications, ...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
 
Geek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop DockerGeek Time Mars 2017 : Workshop Docker
Geek Time Mars 2017 : Workshop Docker
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
A la découverte de docker
A la découverte de dockerA la découverte de docker
A la découverte de docker
 
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
 
Prise en main de Docker
Prise en main de DockerPrise en main de Docker
Prise en main de Docker
 
A la découverte de docker, 2ème partie
A la découverte de docker, 2ème partieA la découverte de docker, 2ème partie
A la découverte de docker, 2ème partie
 
Support : introduction à docker
Support : introduction à dockerSupport : introduction à docker
Support : introduction à docker
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdfoptimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
optimadata.nl-Comment exécuter Postgres sur Docker partie 1.pdf
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 

Plus de Julien Maitrehenry

Comment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commitsComment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commits
Julien Maitrehenry
 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
Julien Maitrehenry
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on Azure
Julien Maitrehenry
 
Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure
Julien Maitrehenry
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
Julien Maitrehenry
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
Julien Maitrehenry
 
Code, ship and run
Code, ship and runCode, ship and run
Code, ship and run
Julien Maitrehenry
 
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbotSécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Julien Maitrehenry
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Julien Maitrehenry
 
Fullstack monitoring - Overview
Fullstack monitoring - OverviewFullstack monitoring - Overview
Fullstack monitoring - Overview
Julien Maitrehenry
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-template
Julien Maitrehenry
 

Plus de Julien Maitrehenry (11)

Comment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commitsComment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commits
 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on Azure
 
Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Code, ship and run
Code, ship and runCode, ship and run
Code, ship and run
 
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbotSécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Fullstack monitoring - Overview
Fullstack monitoring - OverviewFullstack monitoring - Overview
Fullstack monitoring - Overview
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-template
 

Dernier

Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Chadi Kammoun
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
SoniazghalKallel
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
Nicolas Georgeault
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Top-plans
 
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
Faga1939
 

Dernier (6)

Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
 
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
 

Docker, mais qu’est-ce que c’est ?

  • 1. Docker, mais qu’est-ce que c’est ? Introduction à Docker et son écosystème
  • 2. Qui suis-je ? Julien Maitrehenry DevOps, Cloud Architect, Développeur Co-fondateur @Kumojin Kumojin.com Github.com/jmaitrehenry jmaitrehenry.ca
  • 3. Agenda • Qu’est-ce que Docker ? • Docker Compose • Orchestration • Docker Desktop • Questions ? Photo by Ian Taylor on Unsplash
  • 5. Mais que signifie « Docker » ? • Le projet d’une communauté Open Source • Les outils issus de ce projet • L’entreprise Docker inc.
  • 7. Au commencement • Un seul but • Communauté des développeurs sous linux seulement • Un gros binaire
  • 8. Et maintenant ? • Linux et Windows • Multi Architecture (intel, armv5-8, ppc, i386) • Docker utilise plusieurs composants séparés • Standardisation des composants (OCI, CNCF) • Adopté par une large majorité des clouds
  • 9. Qu’est-ce qu’un conteneur ? • Un espace isolé où s’exécute une application • L’espace isolé contient toutes les libs pour rouler son application • Possède sa propre stack réseau, ses users, ses processus • Partage le kernel de l’hôte • Peut avoir des restrictions sur l’utilisation des ressources (CPU, Ram, etc)
  • 10. En quoi c’est différent d’une VM ?
  • 12. Qu’est-ce qu’une image? • Un ensemble de couche • Chaque couche est immutable • Chaque couche est réutilisable
  • 13. Construisons une image docker Image de base Variable d’environnement Variable définie lors du build Dossier de travail – alias dossier courant Copie de fichiers dans l’image Commande executée lors du build Copie du dossier dans l’image Commande par défaut qui sera executée lors d’un docker run
  • 14. Comment transformer notre fichier en image ? ❯ docker build -t myapp:v1.0.0 --build-arg NODE_ENV=development . Commande pour construire une image Donner un nom et un tag à l’image Passer une variable de build Contexte du build Si le fichier Dockerfile porte un autre nom ou est situé ailleurs, il faut le spécifier avec : -f .docker/Dockerfile Attention : le contexte de build est toujours le dernier paramètre
  • 15. Comment lancer un conteneur ? - Je ne peux pas accéder à l’app depuis mon navigateur - Ctr+C n’arrête pas l’app - Le nom du conteneur va être généré aléatoirement (ex: goofy_kapitsa) ❯ docker run myapp:v1.0.0 Commande pour exécuter un container Nom de l’image et son tag
  • 16. Comment lancer un conteneur ? ❯ docker run –ti -p 8080:80 --name myapp myapp:v1.0.0 Exécute en mode intéractif et avec un tty Lie le port 80 du container au port 8080 du host Donne le nom myapp au container
  • 17. Comment lancer un conteneur ? ❯ docker run –d -p 8080:80 --name myapp myapp:v1.0.0 Lance le container en arrière plan ❯ docker run –ti –p 8080:80 --name myapp --rm myapp:v1.0.0 bash Supprime automatiquement le conteneur quand il sera arrêté Change la commande par défaut (CMD)
  • 18. Recap
  • 19. Docker Engine • Application Client-Server pour: • Gérer des images • Gérer des conteneurs • Gérer des réseaux • Gérer des volumes • Possède une API REST et un CLI
  • 20. Volume • Conserver des données en dehors du conteneur • Partager des données avec l’hôte • D’autres drivers possibles This Photo by Unknown Author is licensed under CC BY-SA-NC
  • 21. Partager un dossier/fichier entre le host et le conteneur ❯ docker run -ti --rm -v `pwd`/mydir:/data ubuntu Instruction pour utiliser un volume Dossier local sur l’host Dossier dans le conteneur Attention dans le cas où l’on monte un fichier ! Les modifications au fichier peuvent ne pas être reflétées dans le conteneur Ex: sed, vim, etc
  • 22. Utilisation d’un volume ❯ docker volume create mydata ❯ docker run -ti --rm -v mydata:/data ubuntu Sous commande pour gérer les volumes Nom du volume Nom du volume au lieu du path local
  • 23. Network • Permet de créer des réseaux isolés • Les conteneurs peuvent communiquer entre eux par nom de container, id ou alias • Plusieurs drivers disponibles : • Bridge (default) • Internal • None • Host
  • 24. Internal network ❯ docker network create --internal intnet ❯ docker run --network intnet curlimages/curl -m3 https://google.com ╰─❯ curl: (28) Resolving timed out after 3002 milliseconds Sous commande pour gérer les réseaux Type de réseau Nom du réseau Attache le conteneur au réseau intnet
  • 25. Communication intra conteneur ❯ docker network create --driver bridge mynet ❯ docker run -d --network mynet --name nginx --network-alias web nginx ❯ docker run --rm --network mynet curlimages/curl -m3 http://web Utilise un driver réseau sécifique Ajoute un alias au conteneur dans les réseaux où il est connecté Le nom et l’ID du conteneur fonctionne aussi
  • 26. Autres réseaux utiles ❯ docker run --rm --network none curl -m3 https://google.com ❯ docker run –d --network host nginx Sans isolation réseau entre le conteneur et l’hôte Sans réseau
  • 28. Construisons un fichier docker compose Version du format du fichier Définition des services, alias des conteneurs Définition des réseaux Définition des volumes
  • 29. Construisons un fichier docker compose Nom du service ainsi que de son nom sur les réseaux Image docker du conteneur Si le containeur crash, docker le relance Liste des volumes à attacher au conteneur Liste des variables d’environnement Liste des réseaux à attacher au conteneur
  • 30. Construisons un fichier docker compose Surcharge de la commande par défaut de l’image On peut attacher un volume dans un dossier d’un autre volume Définition pour construire l’image Docker Créer une dépendance à un autre service Liste des ports à lier sur le host
  • 31. Construisons un fichier docker compose Sur un réseau séparé de la base de données
  • 32. Comment utiliser un un fichier compose ? ❯ docker compose ps -a Liste les conteneurs créer par compose Incluant ceux arrêtés ❯ docker compose logs -f [nom du/des service(s)] Affiche les logs Et affiche les nouveaux messages au fur et à mesure ❯ docker compose up –d [nom du/des service(s)] Sous commande pour gérer compose Lance un/des services/tous les services En background
  • 33. Registry Docker • Héberge les images Docker • Nombreux Registry en ligne disponibles: • Docker Hub • Azure ACR • AWS ECR • Github Registry • … • Nombreuses solutions self-hosted: • Docker Registry • Nexus • Artifactory • …
  • 34. Commandes utiles ❯ docker login / docker login kumojin.azurecr.io Connecte Docker à un registry Télécharge une image dans un registry Pousse une image du registry localement ❯ docker push jmaitrehenry/myimage ❯ docker pull kumojin.azurecr.io/myapp/api:v1.0.0 Se connecte à un registry spécifique
  • 35. Orchestration • Pourquoi faire ? • Outils d’orchestration • Solutions cloud
  • 36. Pour quoi faire ? • Approvisionnement et placement des containeurs • Mécanisme de healthcheck et métriques • Gestion des indisponibilités et scalabilité • Gestion des déploiements • Service discovery et gestion du réseau • Et plus encore !
  • 38. Solutions Cloud • Basé sur Kubernetes • Azure: AKS • AWS: EKS • Google: GKE • Basée sur des conteneurs • Azure ACI • AWS Fargate • AWS ECS
  • 39. Docker Desktop Qu’est-ce que c’est ? Qu’est-ce que cela apporte ?