Cómo usar contenedores Docker

Una fotografía de una persona programando en una laptop.

Los contenedores son la columna vertebral de cada instalación de Docker. Sirven como la base de la plataforma Docker y te permiten ejecutar servicios en tu computadora sin preocuparte por dependencias y conflictos de versiones. Aquí, te mostramos lo básico sobre cómo crear, gestionar y personalizar contenedores Docker utilizando la herramienta CLI de Docker.

Tabla de Contenidos

  • Cómo encontrar y descargar una imagen Docker
  • Cómo ejecutar y detener un contenedor Docker
  • Cómo inspeccionar un contenedor Docker
  • Cómo personalizar un contenedor Docker
  • Cómo eliminar contenedores e imágenes Docker

Nota: Comienza instalando Docker en tu sistema Linux.

Cómo encontrar y descargar una imagen Docker

Los contenedores Docker son un tipo especial de entorno de software que te permite ejecutar programas separados del resto de tu sistema original. Para lograr esto, Docker utiliza “imágenes de software”. Estas son copias estáticas de programas que sirven como la base desde la cual comienza un contenedor.

Esta distinción entre imagen y contenedor te permite recrear y adaptar tu software de cualquier manera necesaria. Por ejemplo, puedes tener una imagen como “httpd” pero crear dos contenedores distintos a partir de ella: “website1” y “website2”.

La forma más fácil de buscar una nueva imagen Docker es usar el subcomando search:

docker search httpd

Una terminal destacando la imagen Docker httpd desde la herramienta CLI.

También puedes buscar paquetes en el sitio web de Docker Hub si prefieres usar tu navegador web.

Una captura de pantalla mostrando la imagen Docker httpd desde el sitio web de Docker Hub.

Para descargar la imagen a tu sistema, ejecuta el siguiente comando:

docker image pull httpd

Confirma que has agregado correctamente tu nueva imagen a tu sistema usando el subcomando images:

docker images

Una terminal destacando la imagen Docker httpd instalada en el sistema.

Construyendo una nueva imagen usando Dockerfiles

Además de descargar imágenes preconstruidas de Docker Hub, puedes construir imágenes directamente desde la CLI de Docker. Esto es útil si deseas crear versiones personalizadas de paquetes de software existentes o si estás portando nuevas aplicaciones a Docker.

Para hacer esto, primero crea una carpeta en tu directorio personal para tus archivos de construcción:

mkdir ~/my-docker-image && cd ~/my-docker-image

Crea un nuevo Dockerfile usando tu editor de texto favorito:

nano ./Dockerfile

Pega las siguientes líneas de código dentro de tu nuevo Dockerfile:

FROM nginx  
COPY sample-site /usr/share/nginx/html

Crea una carpeta “sample-site” y copia o crea un sitio HTML básico:

mkdir ./sample-site  
cp ~/index.html ./sample-site/

Guarda tu nuevo Dockerfile, luego ejecuta el siguiente comando para construirlo en tu sistema:

docker build -t custom-nginx .

Verifica si tu nueva imagen Docker está presente en tu lista de imágenes Docker:

docker images

Una terminal destacando la imagen personalizada generada a partir del subcomando de construcción.

Construyendo una nueva imagen usando contenedores existentes

La herramienta CLI de Docker también puede construir nuevas imágenes a partir de los contenedores que actualmente existen en tu sistema. Esto es útil si ya estás trabajando en un entorno existente y deseas crear una nueva imagen a partir de tu configuración actual.

Para hacer esto, asegúrate de que tu contenedor no esté en ejecución:

docker stop my-http-server

Ejecuta el subcomando commit seguido del nombre de tu contenedor, luego proporciona el nombre de tu nueva imagen Docker después de eso:

docker commit my-http-server my-new-server-image

Confirma que tu nueva imagen Docker está en tu sistema ejecutando docker images.

Una terminal destacando la nueva imagen personalizada de un contenedor Docker instalada en el sistema.

Cómo ejecutar y detener un contenedor Docker

Con tu imagen Docker lista, ahora puedes comenzar a usarla para crear tu primer contenedor. Para hacer esto, usa el subcomando run seguido del nombre de la imagen que deseas ejecutar:

docker run httpd

Si bien esto funcionará para ejecutar tu primer contenedor Docker, hacerlo de esta manera tomará el control de tu sesión de shell actual. Para ejecutar tu contenedor en segundo plano, agrega la bandera -d después del subcomando run:

docker run -d httpd

El subcomando run también puede aceptar una serie de banderas adicionales que pueden cambiar el comportamiento de tu nuevo contenedor Docker. Por ejemplo, la bandera --name te permite agregar un nombre personalizable a tu contenedor:

docker run -d --name=my-http-server httpd

Por otro lado, puedes usar la bandera --publish para redirigir el puerto de red donde puedes acceder a tu contenedor Docker. Esto es principalmente útil si no deseas que tu contenedor tome un puerto privilegiado:

docker run -d --name=my-http-server --publish 8080:80 httpd

Una captura de pantalla mostrando un navegador web abriendo el sitio web que está siendo alojado por el contenedor Docker personalizado.

Puedes verificar todos los contenedores Docker que se están ejecutando actualmente en tu sistema ejecutando el siguiente comando:

docker ps

Similar al subcomando run, ps también puede aceptar un puñado de banderas que modificarán su comportamiento. Por ejemplo, para ver los contenedores que están actualmente apagados, usa la bandera -a:

docker ps -a

Para apagar un contenedor en ejecución, usa el subcomando stop seguido del ID del contenedor o el nombre de tu contenedor Docker:

docker stop my-http-server

Puedes reiniciar cualquier contenedor que hayas detenido volviendo a ejecutar el subcomando start:

docker start my-http-server

Por otro lado: aprende los conceptos básicos de alojamiento web con Docker ejecutando un sitio web simple usando darkhttpd.

Pausando y matando un contenedor Docker

La herramienta CLI de Docker también te permite pausar temporalmente y matar un proceso de contenedor en ejecución. Esto puede ser útil si estás solucionando un problema con tu configuración de Docker y deseas aislar o detener un contenedor que no está funcionando correctamente.

Comienza ejecutando docker ps para listar todos los contenedores en ejecución en el sistema.

Encuentra ya sea el ID o el nombre del contenedor que deseas gestionar.

Una terminal destacando el contenedor Docker personalizado que actualmente se está ejecutando en el sistema.

Ejecuta el subcomando pause seguido del nombre del contenedor que deseas suspender temporalmente:

docker pause my-http-server

Puedes reanudar un proceso suspendido ejecutando el subcomando unpause:

docker unpause my-http-server

Para detener un proceso que no está funcionando correctamente, ejecuta el subcomando kill seguido del nombre de tu contenedor:

docker kill my-http-server

Cómo inspeccionar un contenedor Docker

Conocer los detalles intrincados de tu contenedor es una parte vital de mantener la salud de tu pila Docker. Te permite mirar rápidamente cualquier problema potencial y puede ser la diferencia entre arreglar y rehacer toda tu implementación.

Para ver un resumen de tu contenedor Docker, ejecuta el subcomando inspect:

docker inspect my-http-server

Hacer esto imprimirá una larga cadena JSON que describe el estado actual de todo tu contenedor. Puedes reducir esto ya sea canalizando la salida a jq o usando la bandera incorporada -f seguida del objeto JSON que deseas imprimir:

docker inspect -f {{.Name}} my-http-server

Imprimiendo los registros del contenedor en la terminal

Además de eso, también puedes rastrear e imprimir los registros de cualquier contenedor Docker que esté actualmente en ejecución. Esto puede ser útil si deseas verificar cómo se comporta actualmente tu servicio y ver la salida que está devolviendo a STDOUT.

Para hacer esto, ejecuta el subcomando logs seguido del nombre de tu contenedor:

docker logs my-http-server

También puedes ejecutar el subcomando logs con la bandera --follow para crear un registro continuo de tu servicio Docker. Esto es similar a ejecutar tail -f al final de un pipe de UNIX:

docker logs --follow my-http-server

Una terminal mostrando los registros continuos de un contenedor Docker.

Similar a otros subcomandos, también puedes agregar varias banderas para personalizar la salida de los registros de tu contenedor Docker. Por ejemplo, la bandera --timestamps agrega una marca de tiempo detallada para cada mensaje que tu contenedor envía a su STDOUT:

docker logs --timestamps my-http-server

La bandera --details imprimirá incluso las variables de entorno que has establecido para tu contenedor Docker actual. Mientras tanto, la bandera --since te permite mostrar solo los registros que ocurrieron después de un punto particular en el tiempo:

docker logs --details --since 8m my-http-server

Una terminal mostrando una salida de registro más detallada de un contenedor Docker que se está ejecutando actualmente.

Cómo personalizar un contenedor Docker

En su núcleo, un contenedor Docker es una versión pequeña y reducida de Linux que se ejecuta sobre tu sistema actual. Esto significa que, similar a una máquina virtual, es posible acceder y recuperar los datos dentro de tu contenedor.

Para copiar un archivo local desde tu máquina host al contenedor, ejecuta el subcomando cp:

docker cp ~/my-file my-http-server:/tmp

A veces también necesitarás “entrar” en los contenedores abriendo un shell dentro de ellos. De esta manera puedes editar archivos, instalar binarios y personalizarlos según tus necesidades:

docker exec -it my-http-server /bin/bash

Ahora, podrías, por ejemplo, editar “index.html” y crear una página de inicio para el sitio web dentro.

Una terminal mostrando un archivo HTML copiado en el shell raíz de un contenedor Docker.

Para salir del shell del contenedor, presiona Ctrl + D o ejecuta exit en la terminal.

Una terminal destacando el comando de salida del shell raíz del contenedor Docker.

Bueno saber: aprende cómo mover un contenedor Docker existente a un nuevo sistema.

Cómo eliminar contenedores e imágenes Docker

Eliminar contenedores e imágenes Docker no utilizados es una parte importante del mantenimiento general de tu implementación. Hacer esto te permite eliminar archivos innecesarios de tu servidor, ahorrando espacio de almacenamiento a largo plazo.

Antes de eliminar un contenedor, asegúrate de que lo has detenido primero:

docker stop my-http-server

Ahora, elimina el contenedor usando el subcomando rm:

docker rm my-http-server

Confirma que has eliminado correctamente tu antiguo contenedor Docker ejecutando docker ps -a.

Una terminal mostrando todos los contenedores Docker disponibles, incluidos los que están actualmente apagados.

Elimina tu imagen Docker original de tu implementación Docker:

docker rmi my-new-server-image

Una terminal destacando la salida de eliminar una imagen Docker del sistema.

Verifica si has eliminado correctamente tu imagen Docker original ejecutando docker images.

Una terminal mostrando la lista de imágenes Docker actualizada.

Aprender a crear, gestionar y eliminar contenedores Docker es solo algunas de las cosas que puedes hacer con tu servidor Linux. Explora el profundo mundo de la administración del sistema Linux al alojar un servidor y un hub de contenedores Docker con XPipe.

Crédito de la imagen: Shamin Haky a través de Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.