Docker se basa en la contenedorización. Los contenedores Docker son pequeños sistemas encapsulados e independientes (tienen su propio árbol de procesos, sus interfaces de red ..) y se pueden limitar los recursos que se asignan a cada contenedor.


 
Docker (container engine) logo
   

 

 

Autoría de la imagen: dotCloud, Inc.

 

 
En este artículo:


 

 
 

 

1. Contenedores Docker VS Máquinas Virtuales

 

Los contenedores se ejecutan como un proceso, y consumen poca memoria. Están optimizados. El contenedor comparte el Kernel de la máquina host con otros contenedores.

Una máquina virtual, sin embargo, consume más recursos. Una máquina virtual ejecuta un sistema operativo invitado completo con acceso virtual a los recursos del host. Normalmente con las máquinas virtuales ofrecen más recursos de los que una aplicación necesita.

Por tanto en este sentido, los contenedores Docker están más optimizados porque son independientes y pueden limitarse los recursos asignados.


 

 

1.1 Diferencia entre contenedores Docker y Máquina Virtual:

 

 

 

1.2 Cómo funciona un contenedor Docker

 

Un contenedor se inicia ejecutando una imagen. El archivo Dockerfile define una imagen, y por tanto cómo será el contenedor que se creará a partir de esa imagen. Por tanto, un contenedor es una instancia de una imagen.
 
–> Documentación oficial sobre imagenes en Docker.

 

 

Y ese Dockerfile (que es un documento de texto) contiene todos los comandos que normalmente se ejecutan manualmente para construir una imagen para Docker. Docker puede leer las instrucciones de el archivo Dockerfile y construir una imagen para Docker automáticamente.
 

 

1.3 Crear una imagen desde un Dockerfile

 
Para crear una imagen de Docker, necesitaremos crear un archivo Dockerfile.

Como ejemplo de Dockerfile mostramos este de Træfik:
 

 

 

Podemos crear una imagen Docker desde un archivo Dockerfile con el comando:

 
en nuestro caso

 
Docker ejecutará las ordenes contenidas en el archivo Dockerfile y construirá la imagen. A continuación podemos ver la imagen Docker que hemos creado:
 

 

 

e iniciamos el contenedor basado en esa imagen:

 

Y comprobamos que el contenedor se está ejecutando
 

 

Respecto a las imagenes: Si el sistema no encuentra una imagen, intentará conectarse a Docker Hub para descargarla si existe.


 

 

1.4 Ejemplo de creación de contenedor con una imagen ya creada (descargada de Docker Hub)

 
En este caso vamos a descargar una imagen ya compilada para poder crear un contenedor en una máquina con Docker.

Recordemos que los contenedores que ejecutemos en Raspberry Pi han de provenir de imagenes compiladas para Raspberry (arquitectura ARM),
 
podemos utilizar el repositorio de Hypriot en Docker Hub: https://hub.docker.com/u/hypriot/

, y otros repositorios para ARM.
 

Y elegimos el servidor web de Hypriot: https://hub.docker.com/r/hypriot/rpi-busybox-httpd/

 

 
Nos vamos a la terminal y lo descargamos (vemos que en el enlace de Hypriot, nos indica el comando necesario para descargar la imagen):

 

 

 
Y ahora podremos ver la imagen disponible en Portainer (la interfaz gráfica que podemos instalar para gestionar un clúster, o Swarm de Docker):


 

 
Y estas imagenes también podemos verlas por terminal, con

 

 

 

1.5 Comandos de docker image:

 

 

 

Y ahora procedemos a crear el contenedor Docker con la imagen

 
o

 

Y accediendo a la IP de la máquina veremos que el contenedor que realiza la función de Servidor Web, se está ejecutando:


 

 

Comandos Docker Container

 
Podemos comprobar que el sistema muestra los contenedores en funcionamiento con:

 

 

Y en Portainer podremos verlos también:


 
Se puede ver la lista de contenedores en ejecución con el comando

 
Para ver el estado de los contenedores:

 

 

 

Otros comandos de Docker Container:

 

 

 

Crear Contenedores Docker desde PORTAINER:

 
Vamos a crear un contenedor Docker en Portainer.

Es importante que prestemos atención a estos parámetros:

  • Nombre identificativo del contenedor
  • Ports configuration
  • Command
  • Network
  • Runtime & Resources

 

 

 

Desde esta última opción (Runtime & Resources) podremos elegir los recursos que consumirá este contenedor:


 

 
Ahora comprobaremos que el nuevo contenedor ha sido creado y se está ejecutando en el puerto 84 tal y como hemos configurado:

 

 

CONCLUSIÓN

 

Hemos visto qué son los contenedores Docker, cómo funcionan y cómo se construyen.

También hemos hablado de los archivos Dockerfile, cómo usarlos para crear imagenes Docker, y su uso en los contenedores Docker.

Y por último hemos hecho un pequeño repaso de los comandos que podemos usar con docker image (gestionar imagenes Docker) y docker container (gestionar Contenedores Docker).

Ahora es momento de comenzar a practicar lo explicado.   Para más info puedes revisar también los artículos:

 


Etiquetas del articulo: ,