Thématiques principales

dimanche 29 octobre 2017

Docker - publier

Nous avons vu dans le précédent post sur docker comment simplement installer docker sous linux (sous windows c'est relativement similaire), créer son DockerFile pour créer une image et ensuite utiliser cette image pour en instancier un conteneur.

Dans ce post ci nous allons nous intéresser a la publication des images afin d'utiliser celles des autres développeurs/intégrateurs et aussi leur fournir vos propres images.

Bien avant toute chose il vous faut un compte sur le site servant de repository docker. Un fois ce compte créé, reste a se loger dans le Shell docker et si l'on reprend l'image du post precedement creer, il va falloir la tagger comme suit:

1
2
$ docker login
$ docker tag image username/repository:tag

Ainsi vous spécifiez que l'image sera publier via votre repository (formé du username et du repo créé dans la page d'administration du site https://hub.docker.com) et d'un tag spécifiant la version de l'image. Reste a la pousser sur le serveur distant:

1
$ docker push username/repository:tag

Voila votre image est en ligne!! Coooool.... non?

Bien si ça c'est cool voyons encore plus cool, la republication..... et oui car très vite le besoin se fera sentir d'utiliser une image déjà créer la reconfigurer a notre besoin puis de la republier (pour la sauvegarder ou la partager...)

Prenons un exemple. Nous allons récupérer l'image artifactory de Matt

1
$ docker pull mattgruter/artifactory

Par défaut si l'on spécifie pas le tag, latest sera celui utiliser. on verifie:

1
2
3
4
5
$ docker image ls

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE

mattgruter/artifactory                 latest              77905a728def        2 days ago          493MB

Bien on lance un container. Je rappele la commande

1
$ docker run -d -p 8081:8080 --name arti mattgruter/artifactory 

On se connecte sur l'interface administrateur d'Artifactory probablement a l'adresse http://192.168.99.100:8081/artifactory (Nous verrons a une autre occasion les procédure de configuration réseau possible avec docker) et nous y faisons quelques modifications.

Nous souhaitons sauvegarder ces modifications de façon a pouvoir les réutiliser dans le cas notre container serait défaillant ou qu'il faille le recréer ailleurs. Nous allons alors faire un commit de notre container afin de le transformer en image.

On va tout d'abord récupérer l'ID du container:

1
2
3
4
5
$ docker ps

CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES

ce64f8df8020        mattgruter/artifactory   "catalina.sh run"   14 minutes ago      Up About a minute   0.0.0.0:8081->8080/tcp   arti

Puis faire notre commit (attention le container doit etre arreté):

1
$ docker commit -p ce64f8df8020 arti_configured

Ce qui va nous donner une nouvelle image:

1
2
3
4
5
6
7
 $ docker image ls

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE

arti_configured                        latest              b5fd9f878fa2        3 seconds ago       538MB

mattgruter/artifactory                 latest              77905a728def        2 days ago          493MB

Tres bien on va donc tager l'image et la pousser dans notre repo:


1
2
3
$ docker tag arti_configured username/repository:latest

$ docker push username/repository:latest 

Voila notre nouvel artifactory en ligne prêt a être réutiliser au besoin! Pour le vérifier, il suffit de supprimer les images et containers locaux et de faire un pull sur notre repo et de vérifier que notre image contient bien notre configuration. (attention, a cause des log notre image peut tres vite grossir, l'exemple ci contre est pour illustrer... une meilleur méthode nécessiterai un nettoyage ou une configuration statique) Pour ceux qui ne souhaitent pas forcement pousser leur creations, le site ci contre vous expliquera comment l'exporter en local.

Voila, la prochaine fois on s’intéressera aux configurations réseaux.

Aucun commentaire:

Enregistrer un commentaire