<iframe src="//www.googletagmanager.com/ns.html?id=GTM-MBJN56" height="0" width="0" style="display:none;visibility:hidden">
Docker-large_h-dark.png

Vous avez déjà exécuté localement des conteneurs, donc, pour les faire fonctionner à distance, il s'agit simplement d'exécuter le protocole SSH dans un terminal et d'y faire fonctionner votre conteneur, n'est-ce pas ? Qu'arrive-t-il lorsqu'une machine atteint sa pleine capacité ? Vous devez évidemment ajouter un nouvel hôte, mais il peut être problématique de joindre bout à bout des appels API pour créer un hôte distant, y installer Docker, y envoyer des images pour finalement l'exécuter.

Voici maintenant Docker Machine.

Docker Machine vous permet de gérer des hôtes distants Docker tout en faisant abstraction de l'infrastructure sous-jacente et de l'installation initiale. Il n'a jamais été plus facile d'utiliser le pilote Docker Machine de cloud.ca pour créer des hôtes distants Docker dans le nuage canadien.

En suivant les étapes du présent guide, vous installerez le pilote Docker Machine de cloud.ca, vous apprendrez comment utiliser Docker Machine et enfin, vous déploierez des conteneurs sur votre hôte Docker.

 

Pour commencer:

 

La première chose à faire est de créer un compte cloud.ca. Si vous n'êtes pas encore inscrit, vous pouvez commencer votre période d'essai gratuite ici : [https://trial.cloud.ca?utm_source=docker_machine_blog_post]. Après quelques minutes, vous recevrez un courriel pour vous avertir que votre environnement est prêt.

Pendant que votre environnement se crée, si vous ne les avez pas déjà sur votre ordinateur, vous pouvez installer Docker et Docker Machine. À l'heure actuelle, les utilisateurs de Docker pour Mac [https://docs.docker.com/docker-for-mac/install/] et Docker pour Windows [https://docs.docker.com/docker-for-windows/install/] auront déjà Docker et Docker Machine d'installés. Si vous êtes sur Linux, les instructions d'installation pour les différentes distributions se trouvent ici : [https://docs.docker.com/engine/installation/linux/] ou, pour installation ultra rapide, vous n'avez qu'à insérer le lien qui suit dans votre terminal :

$ curl https://get.docker.com | sh

Après avoir installé Docker, vous pouvez obtenir la dernière version de Docker Machine ici : [https://github.com/docker/machine/releases/].

Si tout a été installé correctement, vous devriez voir ceci :

$ docker -v

Docker version 17.03.0-ce, build 60ccb22

$ docker-machine -v

docker-machine version 0.10.0, build 76ed2a6

Après avoir installé Docker Machine, vous devez télécharger le pilote Docker Machine de cloud.ca : [https://github.com/cloud-ca/docker-machine-driver-cloudca/releases] et assurez-vous de l'avoir sur votre chemin d’accès pour que Docker Machine puisse le trouver.

$ which docker-machine-driver-cloudca

/home/adam/bin/docker-machine-driver-cloudca

Une fois que Docker Machine fonctionne avec le pilote de cloud.ca et que votre environnement cloud.ca est prêt, vous aurez à saisir votre clé d'API, car vous en aurez besoin lors de la création d'un nouvel hôte distant Docker. Vous trouverez votre clé en cliquant sur le menu déroulant dans le coin supérieur droit de la console cloud.ca et en sélectionnant : API keys. Vous pouvez voir votre clé d'API en cliquant sur l'icône de l'œil.  Maintenant que vous êtes sur la page des clés d'API, veuillez noter que c'est ici que vous pourrez régénérer vos clés si vous avez des raisons de croire qu'elles ont été corrompues de quelque façon que ce soit.

 

cloud_ca.png

 

cloud_ca-1.png

 

Vous aurez besoin de connaître votre code de service de cloud.ca et le nom de votre environnement pour que Docker Machine sache où déployer les hôtes, ainsi que l'ID d'un réseau dans l'environnement que vous spécifiez.

 

cloud_ca_and_workspace_-_Java_EE_-_Eclipse.png

 

cloud_ca-2.png

 

cloud_ca-3.png

Pour garder toutes ces informations en un seul endroit, nous suggérons de conserver un petit script qui exporte ces valeurs comme variables d'environnement. Vous verrez plus tard que cela aide aussi garder les commandes de Docker Machine concises. Votre fichier devrait ressembler à ceci : ontario_test_area.sh (les noms des variables d’environnement sont importantes) :

#!/bin/bash

export CLOUDCA_API_KEY="******************************"

export CLOUDCA_SERVICE_CODE="compute-on"

export CLOUDCA_ENVIRONMENT_NAME="test_area"

export CLOUDCA_NETWORK_ID="bbefe8dd-bb3e-4f37-b467-b63f8334c15b"

Il est recommandé de garder au moins vos clés d'API dans un script comme celui qui est ci-dessus afin que l'historique et le presse-papier de votre terminal ne conservent pas de copie de celles-ci.

Truc d'expert : Ne validez pas le script, car vous risquez d'être victime d'une recherche GitHub pour « API_KEY ».

Maintenant que tout est installé, vous pouvez commencer à déployer un hôte distant Docker!

 

Création d'un hôte distant

 

Voici ce dont vous aurez besoin pour créer un hôte : un nom, la région et l'environnement dans lesquels ils devraient être créés, quelle matrice utiliser et quel matériel (vCPUs, mémoire vive) utiliser. Par exemple, voici une commande dont l'ensemble complet d'options ressemble à ceci :

$ docker-machine create --driver cloudca \

  --cloudca-api-key "******************************" \

  --cloudca-service-code "compute-on" \

  --cloudca-environment-name "test_area" \

  --cloudca-template "Ubuntu 16.04.01 HVM" \

  --cloudca-compute-offering "1vCPU.1GB" \

  --cloudca-network-id "bbefe8dd-bb3e-4f37-b467-b63f8334c15b" \

  --cloudca-additional-disk-offering "50GB - 50 IOPS Min." \

  host01

Il existe un grand nombre d’options, mais heureusement le pilote de cloud.ca soutient les variables d'environnement pour toutes les options de lignes de commandes. Vous pouvez voir toutes les options et les noms des variables d'environnement associés en exécutant : docker-machine create -d cloudca.

Afin de nettoyer un peu, on peut aller chercher le script crée auparavant et simplifier la commande de création à ceci :

$ . ontario_test_area.sh

$ docker-machine create --driver cloudca \

  --cloudca-template "Ubuntu 16.04.01 HVM" \

  --cloudca-compute-offering "1vCPU.1GB" \

  --cloudca-additional-disk-offering "50GB - 50 IOPS Min." \

  host01

Running pre-create checks...

Creating machine...

(host01) Acquiring public ip address...

(host01) Creating port forwarding rules...

(host01) Creating port forwarding rule for ssh port ...

(host01) Creating port forwarding rule for docker port ...

Waiting for machine to be running, this may take a few minutes...

(host01) Getting state of the cloud.ca instance...

Detecting operating system of created instance...

Waiting for SSH to be available...

Detecting the provisioner...

Provisioning with ubuntu(systemd)...

Installing Docker...

Copying certs to the local machine directory...

Copying certs to the remote machine...

Setting Docker configuration on the remote daemon...

Checking connection to Docker...

Docker is up and running!

To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env host01

De cette façon nous n'avons qu'à préciser la matrice, le matériel et un disque supplémentaire optionnel

Une fois l'hôte crée, on peut répertorier tous les hôtes Docker disponibles comme suit :

$ docker-machine ls

NAME    ACTIVE   DRIVER    STATE    

host01    -      cloudca   Running   

URL                                           SWARM     DOCKER

tcp://xxx.xxx.xxx.xxx:2376                          v17.03.0-ce

 

Déploiement de conteneurs sur des hôtes distants Docker 

 

Docker Machine nous a été très utile, mais il est temps de le mettre de côté et de laisser le bon vieux Docker faire ce qu'il fait de mieux : déployer les conteneurs. On peut demander à Docker de déployer des conteneurs sur notre service à distance en le réglant à actif, comme ceci :

$ eval $(docker-machine env host01)

Pour s'assurer que l'hôte est bien actif, on peut facilement vérifier avec docker-machine.

$ docker-machine active

host01

Docker est maintenant configuré pour déployer des conteneurs de la même façon que vous le feriez localement.

Pour le voir en action, nous pouvons déployer un blogue Ghost sur notre hôte distant en exécutant :

$ docker run --name ghost-server -p 8080:2368 -d ghost

Pour vérifier si le serveur a démarré, vous pouvez lire le journal de Docker comme d'habitude.

$ docker logs -f ghost-server

Appuyez sur CTRL-C pour échapper aux journaux.

Vous aurez besoin de réseaux provenant de cloud.ca pour exposer ce conteneur à l'Internet public. Pour commencer, visitez cloud.ca, cliquez sur votre hôte Docker, saisissez l'onglet des règles de transmission de port et créez une règle de 80 à 8080.

 

cloud_ca-4.png
 
Pour obtenir l'adresse IP publique de votre nouveau blogue, vous pouvez la saisir de la IU de cloud.ca ou par docker-machine comme ceci :
 

$ docker-machine ip host01

xxx.xxx.xxx.xxx

Votre blogue est dorénavant disponible sur l'Internet public!

Ghost.png

Si, après avoir terminé avec votre hôte distant Docker vous voulez continuer à déployer des conteneurs sur votre propre terminal, vous pouvez désactiver l'hôte en exécutant :

$ eval (docker-machine env -u)

Et pour vérifier s'il a été supprimé :

$ docker-machine active

No active host found

Finalement, si vous avez terminé avec votre hôte distant Docker, vous pouvez le supprimer comme ceci :

$ docker-machine rm host01

About to remove host01

WARNING: This action will delete both local reference and remote instance.

Are you sure? (y/n): y

(host01) Releasing public ip address...

Successfully removed host01

 

Étapes suivantes

 

Maintenant que vous savez comment déployer des conteneurs sur des hôtes Docker distants sur cloud.ca, vous devriez essayer de créer plusieurs hôtes, d'ajouter un équilibrage de charge sur plusieurs hôtes et déployer différents types de conteneurs autres que des blogues — peut-être même une grappe MongoDB!

Finalement, si vous voulez orchestrer des conteneurs avec Docker Swarm, Kubernetes, ou Mesos, jetez un coup d'œil sur le module d'extension Rancher de cloud.ca! Pour commencer, cliquez ici pour lire notre blogue à propos de l'installation.