Utilisation de docker-machine basee sur les instances Public Cloud

Objectif

Docker-machine est un outil permettant le déploiement de nœuds docker. Il permet ensuite de les gérer indépendamment les uns des autres comme des environnements spécifiques ou de les associer pour les exploiter en mode cluster. En couplant cet outil avec les instances de Public Cloud, le déploiement d'un nouveau nœud docker se résume à une simple ligne de commande et quelques secondes d'attente.

Prérequis

En pratique

Utilisation de noeuds docker independants

Installation de docker-machine

Docker-machine peut être déployé sur différents systèmes, nous partirons d'un système Debian 8.

Le paquet docker sera installé uniquement pour utiliser le client, nous désactiverons la partie serveur.

# apt-get update
# apt-get install unzip curl docker.io
# service docker stop
# echo manual | sudo tee /etc/init/docker.override
# curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_linux-amd64.zip >machine.zip
# unzip machine.zip
# rm machine.zip
# mv docker-machine* /usr/local/bin

Deploiement d'un noeud docker

Maintenant que nous avons l'outil, il est possible de déployer un nœud docker avec une simple ligne de commande.

$ docker-machine create -d openstack \
--openstack-flavor-name="vps-ssd-1" \
--openstack-image-name="Ubuntu 14.04" \
 --openstack-net-name="Ext-Net" \
--openstack-ssh-user="admin" \
docker-machine-server01

Il est bien sûr possible de déployer autant de nœuds que nécessaire. La commande "docker-machine ls" permet de lister les nœuds disponibles.

Utilisation des noeuds

Nous allons maintenant charger un environnement nous permettant de déployer des containers sur ce premier nœud.

$ docker-machine env docker-machine-server01
$ eval "$(docker-machine env docker-machine-server01)"

Nous voilà prêts pour utiliser docker sur un nœud distant et déployer des containers. Par exemple :

$ docker pull ubuntu
$ docker run -i -t ubuntu /bin/bash

Utilisation de cluster de noeuds docker

Grâce à docker-machine, il est possible de déployer plusieurs nœuds docker et de les gérer par un seul point d'entrée grâce à Swarm.

Swarm est un orchestrateur multi nœuds de docker.

public-cloud

Installation de docker-machine

Voir le chapitre précédent

Recuperation d'un token swarm

Pour la suite il sera nécessaire d'utiliser un token. Nous allons créer une instance pour générer ce token puis nous la supprimerons.

$ docker-machine create -d openstack \
--openstack-flavor-name="vps-ssd-1" \
--openstack-image-name="Ubuntu 14.04" \
--openstack-net-name="Ext-Net" \
--openstack-ssh-user="admin" \
swarm-token-generator
$ eval "$(docker-machine env swarm-token-generator)"
$ docker run swarm create
8957e0f0bbb49dbdcd04b4c9beb2dab3
$ docker-machine rm --force swarm-token-generator

Deploiement du noeud swarm master

Le nœud docker master sera utilisé comme point d'entrée et pilotera les autres nœuds.

$ docker-machine create -d openstack \
--openstack-flavor-name="vps-ssd-1" \
--openstack-image-name="Ubuntu 14.04" \
--openstack-net-name="Ext-Net" \
--openstack-ssh-user="admin" \
--swarm --swarm-master --swarm-discovery \
token://YOUR_TOKEN docker-machine-swarm-master

Deploiement des noeuds docker swarm

L'intérêt est d'ajouter plusieurs nœuds au cluster afin d'avoir un parc de machine assez large pour accueillir l'ensemble des containers.

$ docker-machine create -d openstack \
--openstack-flavor-name="vps-ssd-1" \
--openstack-image-name="Ubuntu 14.04" \
--openstack-net-name="Ext-Net" \
--openstack-ssh-user="admin" \
--swarm --swarm-discovery \
token://YOUR_TOKEN docker-machine-swarm-node01

Utilisation du cluster

$ eval "$(docker-machine env --swarm docker-machine-swarm-master)"
$ docker pull ubuntu
docker-machine-swarm-node02: Pulling ubuntu:latest... : downloaded
docker-machine-swarm-master: Pulling ubuntu:latest... : downloaded
docker-machine-swarm-node01: Pulling ubuntu:latest... : downloaded

Pour constater la bonne initialisation du cluster :

$ docker info
Containers: 4
Images: 6
Storage Driver:
  Role: primary
  Strategy: spread
  Filters: health, port, dependency, affinity, constraint
  Nodes: 3
 docker-machine-swarm-master: 158.69.94.60:2376
  └ Containers: 2
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 2.004 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.13.0-44-generic, operatingsystem=Ubuntu 14.04.1 LTS, provider=openstack, storagedriver=aufs
 docker-machine-swarm-node01: 158.69.94.66:2376
  └ Containers: 1
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 2.004 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.13.0-44-generic, operatingsystem=Ubuntu 14.04.1 LTS, provider=openstack, storagedriver=aufs
 docker-machine-swarm-node02: 158.69.94.68:2376
  └ Containers: 1
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 2.004 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.13.0-44-generic, operatingsystem=Ubuntu 14.04.1 LTS, provider=openstack, storagedriver=aufs
Execution Driver:
Kernel Version:
Operating System:
CPUs: 3
Total Memory: 6.011 GiB
Name: 94d31dd697b1
ID:
Http Proxy:
Https Proxy:
No Proxy:

Maintenant que tout est prêt, il ne reste plus qu'à utiliser docker comme d'habitude, swarm va se charger de placer les containers sur les différents nœuds.

Aller plus loin

Échangez avec notre communauté d'utilisateurs sur https://community.ovh.com/.


Cette documentation vous a-t-elle été utile ?

N’hésitez pas à nous proposer des suggestions d’amélioration afin de faire évoluer cette documentation.

Images, contenu, structure… N’hésitez pas à nous dire pourquoi afin de la faire évoluer ensemble !

Vos demandes d’assistance ne seront pas traitées par ce formulaire. Pour cela, utilisez le formulaire "Créer un ticket" .

Merci beaucoup pour votre aide ! Vos retours seront étudiés au plus vite par nos équipes..


Ces guides pourraient également vous intéresser...

OVHcloud Community

Accedez à votre espace communautaire. Posez des questions, recherchez des informations, publiez du contenu et interagissez avec d’autres membres d'OVHcloud Community.

Echanger sur OVHcloud Community