La idea és disposar d'un cluster de docker-engine i poder instanciar-hi allà els nostres contenidors docker.
Docker Swarm: És l'encarregat d'enviar les instàncies dels contenidors als nodes del nostre clúster.
Consul: És l'encarregat de proporcionar el servei de discover dels nous nodes que afegim al clúster.
Requeriments previs
- Docker Engine: Ens permet crear els contenidors, gestionar-los i instanciar-los
- Docker Machine: Ens permet crear i gestionar les maquines virtuals
- Driver Docker Machine Opennebula: Ens permet utilitzar el docker-machine al cloud de l'OpenNebula
Instal·lar el requeriments:
Per a poder implementar el docker swarm cluster amb l'OpenNebula hem d'instalar el Docker Engine, Docker Machine i el Driver Docker Machine Opennebula.
Aquí està el manual de com fer-ho: Docker Machine OpenNebula Driver
Un cop instal·lat, per comprovar que podeu executar docker-machine, executeu des del vostre usuari:
Consul
Disposarem d'una maquina virtual que ens proporcionarà el servei de discover amb consul
Creem una màquina virtual a l'OpeNebula anomenada consul i deprés executem un contenidor de consul.
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [image_id_boot2docker] --opennebula-b2d-size 10240 consul docker $(docker-machine config consul) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap
Docker Swarm
Exemple d'ús
Actualment disposeu de dues imatges, ja precreades amb el Docker Engine instal·lat que podeu fer servir:
- boot2docker
- Docker-Machine-Ubuntu-14.04
Crear un contenidor amb nginx en una màquina Docker amb el driver de Docker Machine al OpenNebula:
Crear una màquina al OpenNebula amb el Docker Engine i un disc volatil de 10 GB amb la comanda:
docker-machine create --driver opennebula --opennebula-network-id $NETWORK_ID --opennebula-image-name boot2docker --opennebula-image-owner oneadmin --opennebula-b2d-size 10240 mydockerengine
On $NETWORK_ID, serà l'ID de la xarxa on crearem la màquina amb Docker Engine.
Podem comprovar que tot a funcionat bé amb la comanda:
docker-machine ls
Les següents comandes ens mostra les variables d'entorn necessaries per accedir a la shell:
docker-machine env mydockerengine eval $(docker-machine env mydockerengine)
Ara podem começar a fer servir docker sobre la màquina Docker Engine que acabem de crear:
docker pull nginx docker run --name mynginx -d -p 80:80 nginx
- Finalment, comprovem que podem accedir al servidor web que acabem de crear: