Aller au contenu principal

Docker Hub

Notions théoriques

Docker Hub est une plateforme en ligne qui permet de stocker, partager et découvrir des images Docker.

Rappel - Qu'est-ce qu'une image Docker ?
  • Une image Docker est un modèle contenant tout ce qui est nécessaire pour exécuter une application : le code, les dépendances, les configurations, etc.
  • Les images servent de base pour créer des conteneurs.
  1. Rôle de Docker Hub :

    • Docker Hub est un registre public où les développeurs peuvent :
      • Télécharger des images existantes.
      • Publier leurs propres images pour les partager avec d'autres.
      • Trouver des images officielles maintenues par Docker ou des organisations reconnues (comme debian, ubuntu, apache, nginx, mariadb, etc.).
  2. Fonctionnalités principales de Docker Hub :

    • Recherche d'images : Vous pouvez rechercher des images pour des technologies spécifiques (ex. : php, python, node, etc.).
    • Téléchargement d'images : Les images peuvent être téléchargées sur votre machine locale avec la commande docker pull.
    • Publication d'images : Vous pouvez envoyer vos images sur Docker Hub avec la commande docker push.
    • Automatisation : Docker Hub peut automatiser la création d'images à partir de dépôts GitHub ou Bitbucket.
    • Gestion privée/public : Les images peuvent être publiques (accessibles à tous) ou privées (accessibles uniquement à vous ou à votre organisation).
  3. Comptes et authentification :

    • Pour utiliser Docker Hub, rendez vous sur le site https://hub.docker.com.

    • Pour envoyer une image Docker, il est nécessaire de se créer un compte sur le site https://hub.docker.com.

    • Une fois inscrit, vous pouvez vous connecter depuis votre terminal avec docker login.

  4. Vous pouvez consulter les images hébergées :

    • Par exemple, pour rechercher l'image officielle du serveur Apache, il suffit de saisir : httpd.

  5. Commandes essentielles :

    • Télécharger une image :
      docker pull IMAGE_NAME
      Exemple : docker pull nginx
    • Envoyer une image sur Docker Hub :
      docker push USERNAME/IMAGE_NAME
    info

    USERNAME est l'identifiant que vous utilisez pour vous connecter au Docker Hub sur le site https://hub.docker.com/.

    • Lister les images locales :
      docker images
  6. Images officielles et vérifiées :

    • Les images officielles sont maintenues par Docker ou des organisations reconnues.
    • Elles sont identifiées par un badge "Official Image" sur Docker Hub.
  7. Bonnes pratiques :

    • Toujours vérifier les images avant de les utiliser (description, tags, nombre de téléchargements).
    • Utiliser des tags spécifiques (ex. : python:3.11) pour éviter les incompatibilités.
    • Supprimer régulièrement les images inutiles pour économiser de l'espace disque.

Exemple pratique

Télécharger et publier une image sur Docker Hub

Étape 1 : Télécharger une image existante

  1. Ouvrez votre terminal.

  2. Téléchargez l'image nginx depuis Docker Hub :

    docker pull nginx
  3. Vérifiez que l'image est bien téléchargée :

    docker images

    Résultat attendu :

    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx latest abc123456789 2 days ago 133MB

Étape 2 : Modifier l'image

  1. Lancez un conteneur basé sur l'image nginx :

    docker run -p 8080:80 -d nginx
    astuce

    Notez bien le CONTAINER_ID du conteneur.

    Nous pourons ensuite entrer dans ce conteneur avec la commande : docker exec -it CONTAINER_ID bash.

    Vous pouvez vérifier le bon fonctionnement du serveur Web à l'aide de votre navigateur : http://localhost:8080.

  2. Entrez dans le conteneur en cours d'exécution avec la commande :

    docker exec -it CONTAINER_ID bash
  3. Une fois dans le conteneur, modifiez le contenu du fichier index.html (avec la commande echo) :

    echo "Hello, Docker Hub!" > /usr/share/nginx/html/index.html
  4. Quittez le conteneur :

    exit

Étape 3 : Sauvegarder et publier l'image

  1. Créez une nouvelle image à partir du conteneur :

    docker commit CONTAINER_ID USERNAME/nginx-perso
    info

    USERNAME est l'identifiant que vous utilisez pour vous connecter au Docker Hub sur le site https://hub.docker.com/.

  2. Connectez-vous à Docker Hub :

    docker login
  3. Publiez votre image sur Docker Hub :

    docker push USERNAME/nginx-perso

Test de mémorisation/compréhension


Quelle commande permet de télécharger une image depuis Docker Hub ?


Que signifie une image Docker marquée comme 'officielle' sur Docker Hub ?


Quelle commande permet de publier une image sur Docker Hub ?


Que fait la commande `docker login` ?


Quelle commande permet de créer une image à partir d’un conteneur existant ?


Comment vérifier les images Docker disponibles localement ?


Que signifie le tag `nginx:1.23` ?


Quelle commande permet de se connecter à un conteneur actif ?


Que fait la commande `docker commit` ?


Quelle commande permet de supprimer une image locale ?


TP pour réfléchir et résoudre des problèmes

Objectif : Créer une image Docker personnalisée et la publier sur Docker Hub.

Étapes :

  1. Téléchargez l'image officielle nginx depuis Docker Hub.

  2. Lancez un conteneur basé sur cette image sur le port 8080 :

  3. Entrez dans le conteneur en cours d'exécution avec la commande docker exec ....

  4. Une fois dans le conteneur, modifiez le contenu du fichier index.html (avec la commande echo ...) afin que le site Web affiche :

    "Bienvenue sur le serveur Web de VotrePrénom VOTRENOM !".

  5. Quittez le conteneur :

    exit
  6. Sauvegardez le conteneur sous forme d'une image Docker nommée USERNAME/nginx-perso.

    attention

    USERNAME est l'identifiant que vous utilisez pour vous connecter au Docker Hub sur le site https://hub.docker.com/.

  7. Publiez cette image sur Docker Hub sous le nom USERNAME/nginx-perso.

  8. Pour tester, lancez un conteneur basé sur votre image USERNAME/nginx-perso.

  9. Vérifiez dans votre navigateur http://localhost:8080.

  10. Créez une nouvelle image à partir du conteneur :

    docker commit CONTAINER_ID USERNAME/nginx-perso

  11. Connectez-vous à Docker Hub :

    docker login

  12. Publiez votre image sur Docker Hub.

  13. Vérifiez que l'image USERNAME/nginx-perso est bien arrivée dans le Docker Hub https://hub.docker.com/repositories/.

  14. Créez un autre conteneur à partir de votre image :

    docker run -p 8081:80 -d USERNAME/nginx-perso

  15. Vérifiez dans votre navigateur http://localhost:8081.

Une solution