Vous avez maintenant créé votre propre image via un Dockerfile, et vous souhaitez partager cette image avec vos collègues. Pour cela, il existe deux solutions :
soit vous partagez votre fichier Dockerfile à chacun de vos collègues, et vous leur demandez de créer eux-mêmes leur propre image avec un
docker build
;soit vous envoyez votre image sur votre propre registry.
La première solution, bien qu'étant totalement fonctionnelle, force vos collègues à recréer eux-mêmes chacune des images, et cela peut prendre beaucoup de temps.
Pour améliorer cela, vous pouvez utiliser une registry Docker qui vous permet de partager directement votre image.
Créez votre image sur le Docker Hub
Vous allez créer votre image Docker sur le Docker Hub, pour la rendre accessible de façon publique à l'ensemble de la communauté.
Pour cela, vous devez vous rendre sur le site https://hub.docker.com/ et vous connecter avec le compte que vous avez créé lors de l'installation de Docker.
Puis, cliquez sur le lien Create Repository. Vous arrivez alors sur une page où vous devez saisir le nom de votre image, ainsi qu'une description.
Pour le reste du cours, nous allons appeler cette image ocr-docker-build
. Vous pouvez aussi appeler votre repository de la même façon sur le Docker Hub.
Envoyez votre image sur le Docker Hub
Dans le chapitre précédent, vous avez créé une image Docker via la commande docker build
. Nous allons maintenant la publier sur le Docker Hub. Pour cela, nous devons utiliser plusieurs commandes.
Voici la première commande que vous allez utiliser : docker tag ocr-docker-build:latest YOUR_USERNAME/ocr-docker-build:latest
. Celle-ci va créer un lien entre notre image ocr-docker-build:latest
créée précédemment et l'image que nous voulons envoyer sur le Docker Hub YOUR_USERNAME/ocr-docker-build:latest
.
➜ docker tag ocr-docker-build:latest ocr/ocr-docker-build:latest
➜ docker tag id_du_conteneur openclassrooms/ocr-docker-build:latest
Vous pouvez maintenant exécuter la dernière commande nécessaire pour envoyer votre image vers le Docker Hub. Pour cela, vous allez exécuter la commandedocker push YOUR_USERNAME/ocr-docker-build:latest
.
➜ docker push ocr/ocr-docker-build:latest
The push refers to repository [docker.io/ocr/ocr-docker-build]
00f821099106: Pushed
e9223d0e868c: Pushed
3d99cd871f5d: Pushed
fbb641a8b943: Mounted from library/debian
latest: digest: sha256:a24595e38d46841b4b571cde8bd65d49638bec2dbfc08b8bfa5fc47995a0972e size: 1165
Si vous retournez maintenant sur la page Docker Hub de votre image, vous pourrez voir qu'il existe une première version de celle-ci.
Vous pouvez créer d'autres versions de votre image en remplaçant le :latest
par une autre chaîne de caractères. Cependant, il faut bien faire attention, car l'image utilisée par défaut sera toujours l'image :latest
.
Trouvez l'image qui vous correspond
Vous pouvez avoir besoin de rechercher des images dans le Docker Hub, mais il existe deux types d'images différents :
les images officielles ;
les images personnelles.
Docker Inc propose à ce jour 152 images officielles qu'il maintient à jour continuellement, et vous les retrouverez directement sur le Docker Hub à cette adresse.
Il y a aussi de très nombreuses images personnelles créées par différents membres de la communauté, et même par certains éditeurs de solutions open source.
Si vous recherchez une image, vous avez deux façons de procéder :
la solution du barbu en ligne de commande ;
la solution classique avec l'interface web.
Pour la solution du barbu, vous devez utiliser la commande docker search
; par exemple, si on recherche une image Nginx :
docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 11115 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1569 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 695 [OK]
jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as p… 494 [OK]
webdevops/php-nginx Nginx with PHP-FPM 123 [OK]
kitematic/hello-world-nginx A light-weight nginx container that demonstr… 123
zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server wi… 92 [OK]
bitnami/nginx Bitnami nginx Docker Image 64 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 56
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 49 [OK]
tobi312/rpi-nginx NGINX on Raspberry Pi / armhf 24 [OK]
nginx/nginx-ingress NGINX Ingress Controller for Kubernetes 17
nginxdemos/hello NGINX webserver that serves a simple page co… 13 [OK]
wodby/drupal-nginx Nginx for Drupal container image 12 [OK]
blacklabelops/nginx Dockerized Nginx Reverse Proxy Server. 12 [OK]
schmunk42/nginx-redirect A very simple container to redirect HTTP tra… 11 [OK]
centos/nginx-18-centos7 Platform for running nginx 1.8 or building n… 10
centos/nginx-112-centos7 Platform for running nginx 1.12 or building … 7
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 4
1science/nginx Nginx Docker images that include Consul Temp… 4 [OK]
mailu/nginx Mailu nginx frontend 3 [OK]
travix/nginx NGinx reverse proxy 2 [OK]
toccoag/openshift-nginx Nginx reverse proxy for Nice running on same… 1 [OK]
ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 0 [OK]
wodby/nginx
Comme vous pouvez le voir, le CLI Docker vous retourne une liste d'images Docker disponibles.
Vous pouvez aussi faire la même action via le Docker Hub, si nous recherchons la même image sur celui-ci : voici l'URL de la recherche. Nous retrouverons là aussi une liste d'images avec les filtres nécessaires pour classer les images comme nous le souhaitons.
En résumé
Vous savez maintenant envoyer votre image sur le Docker Hub, et vous êtes aussi capable de rechercher des images sur celui-ci.
Retenez ces commandes importantes :
docker push
qui vous permet d'envoyer vos images locales sur une registry ;docker search
qui vous permet de rechercher une image sur votre registry.
Dans la prochaine partie, nous allons découvrir l'utilisation de Docker Compose, pour orchestrer des conteneurs.