Continuemos con nuestras guàas de Docker. Hoy veremos en detalle un tema esencial para todos aquellos que se dedican al desarrollo web: el contenedor Docker.
Un contenedor es la instancia en ejecución de una aplicación en un entorno aislado al que se le asignan recursos de forma dinámica para la ejecución. El contenedor contiene en su interior la aplicación a ejecutar y todo lo que necesita: tiempos de ejecución, libreràas, configuración, etc.
¿Cuál es la diferencia entre imagen y contenedor?
La imagen Docker es un paquete estático en el que se empaquetan todos los recursos necesarios para ejecutar una aplicación.
Se pueden lanzar varios contenedores desde una imagen de Docker. Supongamos, por ejemplo, que nuestra aplicación requiere varias instancias de un determinado servicio, como redis. A partir de la misma imagen de redis disponible en Docker hub es posible tener varios contenedores en los que se ejecuta redis.
¿Cómo se crea un contenedor?
Crear un contenedor a partir de una imagen es muy sencillo: basta con ejecutar el comando docker run.
$ docker run redis –name ‘redis-server’
Al lanzar este comando, Docker descargará la imagen del docker hub y ejecutará una instancia de redis.
El argumento –name nos permite identificar el contenedor y poder usarlo como referencia, tal como veremos en los siguientes ejemplos.
Interactuar con el contenedor
Es posible ejecutar un comando dentro del contenedor con el comando docker exec, como se muestra en el siguiente ejemplo:
$ docker exec -it redis-server redis-cli
Con este comando de Docker, lanzamos el comando redis-cli al interior del contenedor. Usando el argumento -it, el comando se ejecuta en modo interactivo: esto te permite acceder al prompt de comandos dentro del contenedor.
Networking
Dependiendo del propósito de la aplicación, el contenedor podràa habilitar un puerto TCP o UDP al cual acceder desde el exterior. Si queremos que el contenedor se comunique con el host, tendremos que «mapear» el puerto para que Docker abra el acceso al host.
Por ejemplo, si en nuestro equipo local tenemos un cliente con interfaz gráfica para redis y queremos que se conecte al contenedor, tendremos que habilitar el puerto 6379. Para hacer esto, tendremos que usar el argumento -p cuando queramos lanzar el contenedor.
$ docker run redis -p 6379:6379 –name ‘redis-server’
De esta forma, en nuestro cliente redis podremos configurar 127.0.0.1 como host y 6379 como puerto para después acceder a los datos existentes en el contenedor. También podemos especificar un puerto personalizado para el contenedor; todo esto resulta muy útil cuando se tienen dos contenedores con la misma aplicación o tienen el mismo puerto.
$ docker run redis -p 1234:6379 –name ‘redis-server’
Conclusión contenedor Docker
Como hemos visto, crear un contenedor con Docker es una tarea de lo más sencilla. A dàa de hoy, un desarrollador moderno debe conocer todas las funciones de Docker a la perfección si quiere optimizar tanto su forma de trabajar como las aplicaciones que pretende crear.
Tras este estudio en profundidad dedicado al contenedor Docker, en los próximos artàculos veremos cómo crear un entorno de trabajo con Docker, gestionando múltiples contenedores y haciéndolos interactuar entre sà. Son temas de gran importancia para quien desee convertirse en un desarrollador web de nivel avanzado.
Read related articles
Kubernetes Cloud: servicios en la nube para Kubernetes, mini guía práctica
Kubernetes Cloud: vamos a observar de cerca Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE) y Servicio Azure Kubernetes
Cómo funciona Kubernetes: funcionamiento y estructura
Cómo funciona Kubernetes: mini guía para entender el funcionamiento de una de las herramientas más importantes para un desarrollador de
Docker vs Kubernetes: vamos a ver en qué se diferencian
Docker vs Kubernetes: vamos a ver en qué se diferencian y por qué a veces nos confundimos A veces nos