You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

 

 

 

La idea és disposar d'un cluster de docker-engine i poder instanciar-hi allà els nostres contenidors docker. 

Docker Swarm: Ens permet crear un cluster de docker-engine. El node master rebrà i distribuirà els contenidors.

Consul: Ens roporcionarà el servei de discover dels nous nodes que afegim al clúster swarm.

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

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 [boot2docker_image_id] --opennebula-b2d-size 10240 consul
docker $(docker-machine config consul) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap 

 

Docker Swarm

Diposarem dos tipus de màquines virtuals amb swarm:

  • Swarm-master: Aquesta màquina amb swarm serà l'encarregada de distribuir les instàncies dels contenidors als diferents nodes que tinguem al clúster.
  • Swarm-node: Aquesta o aquestes màquines seran les que executaran els contenidors docker.

Swarm-master

CONSUL_IP=$(docker-machine ip consul)
docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id  [boot2docker_image_id] --opennebula-b2d-size 10240 --swarm --swarm-master --swarm-discovery="consul://$CONSUL_IP:8500" --engine-opt cluster-store=consul://$CONSUL_IP:8500 --engine-opt cluster-advertise="eth0:2376" swarm-master

Swarm-node

 

docker-machine create -d opennebula --opennebula-network-id [network_id] --opennebula-image-id [boot2docker_image_id] --opennebula-b2d-size 10240 --swarm --swarm-discovery="consul://$CONSUL_IP:8500" --engine-opt cluster-store=consul://$CONSUL_IP:8500 --engine-opt cluster-advertise="eth0:2376" swarm-node-01

 









Exemple d'ús

Actualment disposeu de dues imatges, ja precreades amb el Docker Engine instal·lat que podeu fer servir:

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:





 

 

 

 

 

 

 

 

  • No labels