Cómo crear un contenedor con Docker

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.

Docker Container


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.

Share: Facebook Twitter Linkedin

Comments