Introduction

Support de présentation : https://soleil-docker.jrobert-orleans.fr/01-Intro_docker

Lien vers le QCM de début et de fin de formation : https://forms.cloud.microsoft/e/08i0cHmL0i

Lien vers le questionnaire de satisfaction (à remplir en fin de formation): https://forms.office.com/e/TFmN6k7uDV

Ce document est téléchargeable en PDF : formationdocker.pdf.

Présentation

Les points qui vous ont été présentés :

  • La problématique de la mise en production

  • Virtualisation

  • Conteneurisation

  • Ce qu’apporte Docker

  • Démo

Docker, premiers pas

Installation

La documentation pour l’installation est disponible ici : https://docs.docker.com/engine/install/

Vérification de l’installation

Après l’installation, vérifiez que tout fonctionne correctement (si vous utilisez docker desktop, ne mettez pas sudo):

sudo docker version

sudo docker info

sudo docker run --rm hello-world

Post-installation (si vous ne passez pas par docker-desktop)

Pour pouvoir lancer la commande docker sans avoir à utiliser sudo, suivez les instructions Manage Docker as a non-root user du lien suivant, résumées ci-dessous : https://docs.docker.com/engine/install/linux-postinstall/

sudo groupadd docker
sudo usermod -aG docker $USER

Attention : cela donne des droits élevés à votre utilisateur. Un utilisateur qui appartient au groupe docker a les mêmes possibilités que le superutilisateur.

A l’issue de cette étape, vous pouvez lancer la commande docker sans sudo :

docker run --rm hello-world

Premier conteneur

Ouvrez deux terminaux, l’un pour lancer un conteneur, et l’autre pour observer le système.

Dans le premier terminal, lancez un conteneur ubuntu en exécutant : docker run -it ubuntu bash

Dans l’autre terminal, listez les conteneurs actifs avec : docker ps.

Faites un tour à l’intérieur du conteneur dans votre premier terminal :

  • constatez que l’utilisateur est root (avec la commande whoami).

  • constatez que le système de fichiers n’est pas celui de la machine hote (par exemple avec ls /home/).

  • constatez que vous pouvez installer des logiciels (apt update puis apt install vim ).

  • constatez que vous ne pouvez pas rebooter la machine, ni tuer de processus qui ne sont pas dans le conteneur, etc.

Cycle de vie d’un conteneur

Un conteneur peut être dans l’un des états suivants :

  • Created (docker create) : vient d’être créé mais n’est pas lancé.

  • Running (docker run).

  • Restarting (docker restart).

  • Exited (docker kill/stop) : les processus du conteneur sont tous « morts ».

  • Paused (docker pause / docker unpause) : les processus sont tous en pause, prend des ressources mémoire.

  • Dead : en cours de suppression.

À vous

  • Dans quel état se trouve votre conteneur actuel (pour l’observer, utilisez docker ps) ?

  • Tuez votre conteneur avec docker kill PREFIXE_ID_CONTENEUR où PREFIXE_ID_CONTENEUR est le début de l’ID de votre conteneur.

  • Pour constater que ça a fonctionné, vous ne devez plus le voir apparaître lorsque vous faites docker ps.

  • Pourtant il existe encore, mais est dans l’état « exited ». Observez son existence avec docker ps -a ou docker ps --all.

  • Pour terminer, essayez de supprimer votre conteneur avec docker rm .

Récapitulatif

commandes à retenir

  • docker ps -a

  • docker run -it -d IMAGE COMMANDE

  • docker kill

  • docker rm

Quelques autres petites options de docker run

Essayez les options suivantes:

  • --restart : redémarre le conteneur si il se termine

  • --rm : supprime le conteneur quand il se termine

  • --name : nomme le conteneur

Nettoyage

Pour supprimer tous les conteneurs terminés, vous pouvez utiliser docker container prune

Dockerhub

Présentation

DockerHub est le « registry public » officiel de Docker. Il permet de :

  • Stocker et partager des images Docker

  • Automatiser la construction d’images

  • Intégrer avec des outils CI/CD

  • Collaborer en équipe

Types d’images

Sur DockerHub, on trouve différents types d’images (cf : https://docs.docker.com/docker-hub/repos/manage/trusted-content/):

  • Images officielles : Maintenues par Docker ou les éditeurs officiels

  • Images vérifiées : Créées par des Docker Verified Publishers

  • Images communautaires : Créées par la communauté

Lorsque vous avez fait docker run ubuntu, l’image ubuntu:latest a été téléchargée à partir de docker hub.

Pour en savoir plus sur le contenu de cette image, on a la documentation ici : https://hub.docker.com/_/ubuntu .

  • On remarque par exemple que cette image propose le tag « 24.04 », probablement la mouture de 2024 de ubuntu. On peut la lancer en faisant : docker run -it ubuntu:24.04 . Regardez le contenu de /etc/os-release.

Sur le site dockerhub : https://hub.docker.com/ dans l’onglet « Explore », on y trouvera tout un tas d’images.

  • Pouvez vous trouver une image avec un interpréteur python ?

  • Pouvez vous trouver une image contenant un environnement pour votre langage de programmation préféré ?

Limites et alternatives

  • Limites de DockerHub gratuit (cfhttps://docs.docker.com/docker-hub/usage/):
    • 100 pulls anonymes / 6h

    • 200 pulls authentifiés / 6h

    • Un seul build concurrent

  • Alternatives à DockerHub :
    • GitHub Container Registry

    • Google Container Registry

    • Amazon Elastic Container Registry

    • Azure Container Registry

Quiz

--- primary_color: orange secondary_color: lightgray text_color: black shuffle_questions: false --- ## Quelle(s) commande(s) permet de lister les images docker de votre système ? > Plusieurs réponses sont valides ! - [x] docker image ls - [x] docker images - [x] docker image list - [ ] docker images ls - [ ] docker images list - [ ] docker ls - [ ] docker list - [ ] docker container ls ## Quelle(s) commande(s) permet de lister les conteneurs actifs de votre système ? > Plusieurs réponses sont valides ! - [x] docker ps - [x] docker container ls - [x] docker container ps - [ ] docker ls - [x] docker container list - [ ] docker containers ## Quelle(s) commande(s) permet d'obtenir des informations sur la commande docker ps ? - [x] man docker-ps - [ ] man docker ps - [ ] man docker - [ ] docker --help - [x] docker ps --help - [x] docker ps -h ## Quelle(s) commande(s) permet de lister tous les containers (y compris ceux qui ne sont pas actifs ?) ? - [x] docker ps -a - [x] docker ps --all - [ ] docker - [x] docker container list -a - [ ] docker containers