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

results matching ""

    No results matching ""