Docker: Instalando docker en Windows
Introducción
Docker está revolucionando el mundo del cloud computing y la virtualización. Se trata de un proyecto que automatiza la puesta en marcha de aplicaciones dentro de contenedores de software a través de una capa adicional de abstracción y automatización de la virtualización a nivel de sistema operativo en Linux.
Todo esto permite separar la aplicación de la infraestructura subyacente de aplicaciones y servidores (Sistema operativo, Bases de datos, servidores de aplicaciones...) y centrarse únicamente en su desarrollo y puesta en marcha. De este modo, podemos reproducir exactamente las mismas condiciones en cuanto a arquitectura en el entorno de desarrollo y en el entorno productivo lo que ademas de facilitar el desarrollo y testeo de la aplicación, nos evitará futuros bugs y defectos relacionados con las mismas.
En la siguiente serie de tutoriales mostraremos cómo instalar docker en windows para emplearlo como herramienta de apoyo al desarrollo de aplicaciones, acelarando el ritmo de desarrollo para distintas plataformas y previniendo los posibles problemas al pasar nuestras aplicaciones al entorno de producción.
Arquitectura
Sin entrar en muchos detalles acerca de imágenes, directorios, contenedores, volúmenes, etc. vamos a tratar de sintetizar un poco como se fundamenta la arquitectura de docker.
En una primera capa encontramos el sistema operativo, aquí es dónde se ejecuta el componente principal de Docker, el demonio o proceso principal (Docker Daemon). El sistema operativo debe de estar basado en el Kernel de Linux 3.10 como mínimo. Es por ello que si vamos a trabajar con Docker desde windows, necesitaremos una máquina virtual dónde ejecutar este sistema operativo, pero eso lo veremos más adelante.
En una siguiente capa encontramos las imágenes. Éstas son plantillas de solo lectura que pueden contener el sistema operativo, el servidor de aplicaciones, etc. Una imagen puede basarse en otra imagen y añadir un componente más, de esta forma, las imágenes se van apilando hasta conseguir los componentes necesarios. Hay un directorio público que contiene infinidad de imágenes, con lo que es posible que alguien ya haya creado una imagen que necesitemos.
Finalmente, en la última capa encontramos el contenedor. Aquí se agrupa todo lo necesario para que pueda ejecutarse la aplicación. Cada contenedor se crea a partir de una imagen. Cada contenedor es un entorno aislado y seguro dónde ejecutar la aplicación, por lo que en general se recomienda ejecutar cada proceso en un contenedor distinto.
Instalando en Windows
Tal como hemos visto, el componente principal de Docker requiere un sistema operativo Linux para poderse ejecutar. Para ello encontramos otro de los componentes principales de Docker, Docker Machine, que permite crear servidores Docker en máquinas virtuales. Con ello, se permite poder tener servidores Docker en una máquina local o en un servidor en la nube (Amazon Web Services, Microsoft Azure, Openstack...)
Para el caso de Windows, Docker Machine creará una máquina virtual empleando Virtual Box.
Docker Toolbox
La instalación en Windows se ha simplificado bastante, ya que Docker nos proporciona el paquete Docker Toolbox que incluye todo lo necesario para crear un servidor Docker, entre otras cosas Virtual Box, Docker-Machine y Docker Engine. Los componentes se pueden instalar de forma opcional, por ejemplo, es posible que ya contemos con una versión actualizada de Virtual Box en nuestro sistema, por lo que no será necesario instalarlo.
El primer paso será por tanto descargar e instalar Docker Toolbox.
A partir de aquí seguiremos las instrucciones del wizard para instalar los componentes necesarios.
Docker Machine
Una vez se haya instalado Docker Toolbox, ya dispondremos de docker-machine en nuestro sistema y podremos crear nuestra primera máquina virtual servidor de docker engine.
Docker machine requiere acceso a las herramientas que nos proporciona Git (entre ellas ssh.exe), por lo que si no lo tenemos en el path de windows, deberemos de añadirlo. Para ello, presionamos en el teclado la tecla de windows y pausa para abrir la información del sistema. Desde aquí presionamos sobre el enlace Configuración avanzada del sistema.
En la pestaña avanzado, pinchamos sobre variables de entorno.
En las variables del sistema, editamos la variable Path.
Añadimos el directorio donde se encuentra git, en nuestro caso "C:\Program Files\Git\bin\"
.
Ya podemos crear nuestra primera máquina. Para ello ejecutamos el siguiente comando:
1docker-machine create --driver virtualbox dev
En este caso estamos pidiendo crear una máquina empleando el driver de VirtualBox que se llame "dev". Con ello, docker-machine creará automáticamente una máquina linux con docker-engine totalmente configurada y lista para ser usada. Si abrimos el panel de control de VirtualBox podremos comprobarlo.
En cualquier momento podemos usar el comando:
1docker-machine ls
para listar las máquinas que tenemos en el sistema y su estado.
La máquina se inicia automáticamente cuando se crea. En cualquier caso, para iniciarla si se encuentra apagada (como en la captura anterior), emplearemos el siguiente comando:
1docker-machine start dev
dónde "dev" es el nombre que le hemos dado a la máquina en el primer paso.
Cada vez que queramos trabajar con esta máquina virtual, deberemos de crear las variables de entorno en la consola. Para ello usamos el siguiente comando:
1FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd dev') DO %i
Para facilitar todas estas tareas es conveniente recoger estos comandos en ficheros bat, que automaticen las tareas. Si queremos incluir la instrucción anterior en un .bat, hay que recordar poner dos signos % en lugar de uno:
1FOR /f "tokens=*" %%i IN ('docker-machine env --shell cmd dev') DO %%i
Finalmente, para apagar la máquina empleamos el siguiente comando:
1docker-machine stop dev
Con todo ello damos por finalizada la instalación. En el siguiente tutorial veremos como crear una imagen desde otra y nuestro primer servicio containerizado.
Comentarios en "Docker: Instalando docker en Windows"
Este post está ya un poco desfasado. Intentaré ver si lo actualizo un poco e introduzco alguna alternativa como instalar docker empleando
por ejemplo, Bash on Ubuntu on Windows (10)