Docker-Machine
Docker-machine es una herramienta que permite crear sistemas o hosts para albergar contenedores. Estos sistemas pueden crearse bajo VirtualBox, Amazon o Digital Ocean. En vez de usar nuestra máquina como host, podemos crear directamente una instancia en esos servicios y administrar el manejo de nuestros contenedores remotamente desde nuestra computadora.
No necesitamos instalar nada, porque ya lo hicimos al comienzo del tutorial.
Creando nuestra primera Docker-Machine
Abrimos el terminal.
Creamos nuestra primera máquina con el nombre de default
usando VirtualBox.
$ docker-machine create -d virtualbox default
Listando nuestras máquinas
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Saved v1.13.1
Iniciando nuestra máquina
$ docker-machine start default
Luego de iniciar nuestra_ docker machine _es necesario ejecutar este comando
eval $(docker-machine env default)
Este comando establece ciertas variables de entorno que permite conectarnos con nuestra máquina, en pocas palabras, los comandos de docker que ejecutemos de ahora en adelante en nuestra consola serán ejecutados en nuestra docker machine
Nota: Si cerramos la consola, debemos volver a ejecutar el comando para tomar control de nuevo.
Creando un contenedor dentro de la máquina
$ docker run busybox echo hello world
Recordemos que nuestro contenedor fue creado dentro de la máquina default
Deteniendo nuestra máquina
Si deseamos detener nuestra máquina, ejecutamos lo siguiente:
$ docker-machine stop default
Destruyendo nuestra máquina
Es importante que antes de remover nuestra máquina, la misma debe estar detenida.
$ docker-machine rm default
Creando dos máquinas
Ahora, hagamos un ejemplo un poco más complejo: crear dos máquinas y correr dentro de ella un contenedor con nginx
$ docker-machine create -d virtualbox client1
$ docker-machine create -d virtualbox client2
Listamos las máquinas para chequear que se crearon correctamente
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Saved Unknown
client1 - virtualbox Saved Unknown
client2 - virtualbox Saved Unknown
Instalando NGINX
Ahora, instalemos nginx en nuestras máquinas.
Para client1
$ eval $(docker-machine env client1)
$ docker run -d -p 80:80 nginx:1.8-alpine
$ docker-machine ip client1
$ open "http://$(docker-machine ip client1)" # Solo para mac, si no se tiene, visitar ip manualmente
Para client2
eval $(docker-machine env client2)
docker run -d -p 80:80 nginx:1.8-alpine
docker-machine ip client2
open "http://$(docker-machine ip client2)" # Solo par mac, si no se tiene, visitar ip manualmente
Acabamos de correr un contenedor en modo foreground con la imagen de nginx:1.8-alpine, para luego con el comando docker-machine ip <machine_name>
obtener el ip de la máquina y visitarla usando dicha ip.
Luego de visitar el ip de nuestras máquinas deberíamos ver el mensaje por defecto de nginx para verificar que funcionó.
Accediendo a nuestras máquinas a través de SSH
Si queremos entrar mediante ssh al host remoto, podemos utilizar el siguiente comando
$ docker-machine ssh <nombre_máquina>
Intentemoslo con una de las máquinas
$ docker-machine ssh client1
Si todo salió bien, deberíamos estar dentro de la máquina client1
. Ahí podemos ejecutar directamente los comandos de docker si lo deseamos.
Eliminamos nuestras máquinas.
$ docker-machine stop client1 client2
$ docker-machine rm client1 client2