Cómo usar contenedores Docker

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
También puedes buscar paquetes en el sitio web de Docker Hub si prefieres usar tu navegador web.

Para descargar la imagen a tu sistema, ejecuta el siguiente comando:
docker image pull httpdConfirma que has agregado correctamente tu nueva imagen a tu sistema usando el subcomando images:
docker images
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-imageCrea un nuevo Dockerfile usando tu editor de texto favorito:
nano ./DockerfilePega las siguientes líneas de código dentro de tu nuevo Dockerfile:
FROM nginx
COPY sample-site /usr/share/nginx/htmlCrea 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
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-serverEjecuta 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-imageConfirma que tu nueva imagen Docker está en tu sistema ejecutando docker images.

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 httpdSi 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 httpdEl 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 httpdPor 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
Puedes verificar todos los contenedores Docker que se están ejecutando actualmente en tu sistema ejecutando el siguiente comando:
docker psSimilar 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 -aPara 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-serverPuedes reiniciar cualquier contenedor que hayas detenido volviendo a ejecutar el subcomando start:
docker start my-http-serverPor 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.

Ejecuta el subcomando pause seguido del nombre del contenedor que deseas suspender temporalmente:
docker pause my-http-serverPuedes reanudar un proceso suspendido ejecutando el subcomando unpause:
docker unpause my-http-serverPara detener un proceso que no está funcionando correctamente, ejecuta el subcomando kill seguido del nombre de tu contenedor:
docker kill my-http-serverCó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-serverHacer 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-serverImprimiendo 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-serverTambié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
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-serverLa 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
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:/tmpA 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/bashAhora, podrías, por ejemplo, editar “index.html” y crear una página de inicio para el sitio web dentro.

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

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-serverAhora, elimina el contenedor usando el subcomando rm:
docker rm my-http-serverConfirma que has eliminado correctamente tu antiguo contenedor Docker ejecutando docker ps -a.

Elimina tu imagen Docker original de tu implementación Docker:
docker rmi my-new-server-image
Verifica si has eliminado correctamente tu imagen Docker original ejecutando docker images.

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.