he copiat el següent articleliteralment
http://www.joseangelfernandez.es/blog/2015/03/preguntas-frecuentes-sobre-docker-para-usuarios-de-windows/
En artículos anteriores ya he estado haciendo una introducción de
qué es Docker y cómo empezar a usarlo
desde nuestros equipos con Windows o a través de Microsoft Azure. Sin
embargo, para los usuarios acostumbrados a trabajar con Windows Server,
no suele ser sencillo comprender las nuevas posibilidades que ofrece y
cómo funciona. A través de Twitter llegué al blog de
Richard Seroter
donde recopilaba una buena colección de preguntas y respuesta enfocadas
a aquellos usuarios que usan Windows. Tras pedirle permiso para
adaptarlo al español os dejo a continuación con la colección de
preguntas y respuestas.
P: ¿Es Docker otra forma de virtualización?
R: En cierta manera se podría considerar así. Su objetivo fundamental es
proporcionar la capacidad de ejecutar contenedores ligeros que permitan
aislar ciertos procesos del resto del sistema operativo. Cuando
hablamos de procesos estos pueden ser una aplicación web, una base de
datos, un balanceador de carga o prácticamente cualquier cosa que
deseemos. A diferencia de las máquinas virtuales, un contenedor no
proporciona el mismo nivel de funcionalidad pero sí que simplifica los
procesos de creación, uso y destrucción de los mismos. En algunos casos,
el uso de contenedores es conocido como
virtualización a nivel de sistema operativo,
algo que se adecúa a la realidad ya que cada contenedor obtiene su
propio espacio de ejecución y recursos dentro del sistema operativo
anfitrión.
P: ¿Cómo se diferencian los contenedores de Docker de una máquina virtual?
R: Cuando estamos haciendo uso de una máquina virtual ejecutada sobre
Hyper-V por ejemplo, estamos realizando una virtualización completa del
sistema operativo invitado empleando los recursos del servidor físico
disponible por debajo. Usando contenedores como los que ofrece Docker
estamos aislando únicamente procesos y sus dependencidas. Un contenedor
comparte el kernel de Linux con otros contenedores y el propio sistema
operativo anfitrión. Es decir, en lugar de ejecutar una copia completa
del sistema operativo como las máquinas virtuales hacen, los contenedoes
se resumen a un directorio dentro del sistema operativo que contiene
todo lo necesario para ejecutarse.
P: ¿Docker == contenedores?
R: No, Docker únicamente se refiere al demonio que compila, ejecuta y distribuye los contenedores.
Q: ¿Puedo funcionar algo como Docker de forma nativa en Windows?
R: No realmente. A día de hoy no es posible contar con una solución similar a Docker que se ejecute en Windows. G
racias al acuerdo de Microsoft con Docker
será posible disponer de una solución similar ejecutándose sobre la
siguiente versión de Windows Server. A día de hoy, ya podemos disponer
del
cliente de Docker de forma nativa en Windows.
Para poder lograr que el demonio de Docker se ejecute de forma nativa es necesario que el núcleo de Windows proporcione
características similares a las que ofrece el kernel de Linux y que posibilitan esta tecnología:
- Namespaces: proporcionan el aislamiento necesario de los recursos utilizados por los contenedores
- Grupos de control: permiten gestionan los límites
de recursos que los contenedores pueden utilizar para evitar que
acaparen todo lo disponible. Algo similar a lo que Hyper-V permite con
las opciones de QoS sobre la red, el almacenamiento y la memoria
- Union File Systems: un sistema de ficheros basado
en capas que permita crear proyecciones a partir de diferentes copias de
la estructura de nuestro árbol de directorios en una sola.
- Fomato definido de contenedores: la estructura que
defina qué es un contenedor y que se integra con los elementos
anteriores para dar forma a la solución. En Linux a día de hoy se
soporta libcontainer y LXC
P: ¿Qué es una imagen de Docker?
R: Las imágenes son plantillas de solo lectura usadas para crear los
contenedores. Es posible crear nuestras propias imágenes, actualizar las
ya existentes o descargarlas a partir de registros disponibles como
Docker Hub.
Las imágenes descargadas se almacenan en el host local de Docker y se
pueden utilizar para crear nuevos contenedores. Cada vez que una imagen
es modificada se le añade una nueva capa. De esta forma es posible
distribuir los cambios de forma sencilla sin la necesidad de distribuir
toda la imagen completa.
P: ¿Cuánto ocupan las imágenes de Docker?
R: Las imágenes que se usan como base pueden ocupar de unos cientos de
megabytes hasta unos pocos gigabytes. A partir de ahí, cada capa que se
añade a la imagen base suele ser de un tamaño más pequeño aunque es
necesario tener en cuenta que las dependencias pueden hacer que nuestro
contenedor crezca más de lo esperado.
P: ¿Qué posibilidades ofrece Docker a la hora de mover nuestros contenedores entre diferentes servidores?
R: A diferencia de las máquinas virtuales que están asociadas a un
hipervisor específico y su tamaño suele ser considerable, los
contenedores pueden ser ejecutados en cualquier plataforma en la que
Linux se ejecute y se pueden construir de forma rápida a partir de
pequeñas imágenes.
P: ¿Es posible ejecutar Docker sobre Windows??
R: A día de hoy no es posible realizarlo de forma nativa. Si estás interesado es necesario realizarlo a través de
una pequeña máquina virtual que proporcione los elementos necesario de Linux para ejecutarse. Soluciones como Boot2Docker simplifican dicho proceso.
P: ¿Es posible ejecutar más de un proceso en un contenedor de Docker?
R: Técnicamente sí es posible; sin embargo, el equipo de Docker recomienda que cada contenedor ejecute un único proceso.
P: ¿Una aplicación Dockerizada es portable a cualquier host que ejecute Linux?
R: El objetivo es que así sea; es decir, que un desarrollador sea capaz
de ejecutar una imagen creada en Ubuntu sobre una máquina que esté
ejecutando Red Hat. Sin embargo, es posible que aparezcan problemas en
el caso de que las herramientas instaladas dependan de ciertas
características en el kernel de Linux que no están disponibles en la máquina destino.
P: ¿Cómo se gestionan los datos de una aplicación Dockerizada?
R: Cuando sales de un contenedor, la capa de lectura y escritura de
ficheros disponible desaparece. Si quieres mantener los datos una de las
opciones es guardar el contenedor como una nueva imagen de nuestro
repositorio. Sin embargo, Docker recomienda el uso de
volúmenes de datos dentro de los contenedores o contenedores enfocados a realizar esa tarea en su lugar. La
siguiente pregunta en StackOverflow propociona una buena visión sobre este tema. Soluciones externas como
Flocker también pueden resultar útiles.
P: ¿Hay alguna distribución de Linux que sea mejor que otra para ejecutar Docker?
R: No. Existen distribuciones de Linux enfocadsa a soluciones de
contenedores como CoreOS; sin embargo, es posible ejecutar Docker de
forma sencilla en otras distribuciones como SUSE o Ubuntu. En ambos
casos, recuerda que es necesario utilizar alguna de las versiones más
recientes disponibles de tu distro.
P: ¿Qué tipo de software es posible ejecutar en un contenedor de Docker?
R: Realmente, cualquier cosa que se ejecute sobre Linux debería ser capaz de ejecutarse en un contenedor.
P: ¿Necesito usar la nube para ejecutar Docker?
R: No, no es necesario. Es posible ejecutar Docker en máquinas virtuales
(locales o en la nube), máquinas físicas (locales o en la nube) o en
servicios online basados en la solución de Docker.
P: ¿Qué tecnologías están relacionadas con Docker y debería tener en cuenta?
R: La nueva tendencia de aplicaciones basadas en microservicios y
contenedores fuerza a los desarrolladores a aprender una serie nueva de
conceptos. Es posible que no estés acostumbrado a herramientas de
despliegue de contenedores como
Fleet, herramientas de orquestación de contenedores como
Kubernetes o herramientas de descubrimiento de servicios como
Zookeeper o
Consul; sin embargo, es un buen momento para comenzar a leer sobre ello.
P: ¿Es una tecnología aún inmadura?
R: Los contenedores es una tecnología con una evolución muy rápida, es
posible que Docker esté madura para ser usada en el mundo empresarial
mucho antes que las propias empresas lo estén.
La seguridad es un área preocupa a día de hoy sobre todo y las guías de arquitectura y despliegue de soluciones basadas en Docker aún están en desarrollo.
P: Ok, estoy más convencido ahora de probarlo. ¿Cuál es la forma más sencilla de comenzar en Windows?
R: Configura Hyper-V en tu equipo,
descarga una imagen de Ubuntu e instala Docker. A partir de ahí, sigue los ejemplos disponibles en la propia página de Docker.
Espero que estas preguntas te ayuden a tener una mejor visión de qué
es Docker y qué implicaciones tiene en este nuevo mundo de opciones que
abre para los profesionales de infraestructura. Muchas gracias a
Richard por dejarme utilizar su artículo como base de este.