Comandos LinuxExplicados en español
/
Ficha77 / 104
Categoría
Sistema
Ejemplos
6
Ver también
systemctl · ss · ps · usermod

docker

docker (estibador: el que carga contenedores en el puerto)

Corre aplicaciones dentro de contenedores aislados y fáciles de mover.

Corre programas dentro de contenedores: cajas aisladas que traen la aplicación con todo lo que necesita, así funciona igual en tu laptop que en un servidor. Lo usas para levantar bases de datos, sitios web o herramientas sin instalarlas directamente en el sistema. No viene instalado: en Debian y Ubuntu, sudo apt install docker.io (o la versión oficial de docker.com).

Sintaxisdocker COMANDO [opciones]
Precaución

docker rm -f, docker system prune y docker volume rm borran contenedores y datos sin pedir confirmación; los datos de un volumen borrado no se recuperan. Y agregar tu usuario al grupo docker equivale a darle acceso de root al equipo.

§ 1

Despiece

6 ejemplos
Ver qué contenedores corren

Ver qué contenedores corren

2 piezas
Lámina01 / 06
Comandodocker ps
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2psValorLista los contenedores en ejecución.
Resultado

Una línea por contenedor con su ID, imagen, estado (Up 3 hours) y puertos. Agrega -a para ver también los detenidos. Si responde permission denied, usa sudo o pertenece al grupo docker.

Levantar un servidor web

8 piezas
Lámina02 / 06
Comandodocker run -d --name web -p 8080:80 nginx
Piezas8
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2runValorCrea y arranca un contenedor.
3-dOpciónEn segundo plano: te devuelve la terminal.
4--nameOpciónLe pone nombre al contenedor.
5webValorEl nombre, para referirte a él después.
6-pOpciónConecta un puerto de tu equipo con uno del contenedor.
78080:80ValorEl 8080 de tu equipo va al 80 del contenedor: primero el tuyo, luego el de adentro.
8nginxArgumentoLa imagen: un servidor web listo para usarse.
Resultado

Docker descarga la imagen la primera vez y arranca nginx. Abres http://localhost:8080 y ves la página de bienvenida. El contenedor sigue corriendo hasta que lo detengas.

Ver los mensajes de un contenedor

4 piezas
Lámina03 / 06
Comandodocker logs -f web
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2logsValorMuestra lo que imprimió el contenedor.
3-fOpciónSigue mostrando los mensajes nuevos en vivo.
4webValorEl nombre del contenedor.
Resultado

Ves los registros de nginx y los nuevos aparecen conforme llegan, como con tail -f. Sales con Ctrl+C; el contenedor sigue corriendo.

Entrar a un contenedor

5 piezas
Lámina04 / 06
Comandodocker exec -it web bash
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2execValorEjecuta un comando dentro de un contenedor que ya corre.
3-itOpcióni mantiene la entrada abierta y t te da una terminal: juntas permiten trabajar adentro.
4webValorEl contenedor donde entras.
5bashArgumentoEl programa que corres adentro: una terminal.
Resultado

Quedas en una terminal dentro del contenedor, con sus archivos. Sales con exit y el contenedor sigue corriendo. Si la imagen no trae bash, usa sh.

Detener y borrar un contenedor

7 piezas
Lámina05 / 06
Comandodocker stop web && docker rm web
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2stopValorDetiene el contenedor de forma ordenada.
3webValorEl contenedor que detienes.
4&&OperadorSolo si se detuvo bien, sigue con lo siguiente.
5dockerComandoLa herramienta de contenedores.
6rmValorBorra el contenedor detenido.
7webValorEl contenedor que borras.
Resultado

El contenedor se detiene y desaparece. La imagen nginx se queda descargada para la próxima vez. Lo que había dentro del contenedor se pierde, salvo que estuviera en un volumen.

Levantar un proyecto completo

4 piezas
Lámina06 / 06
Comandodocker compose up -d
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1dockerComandoLa herramienta de contenedores.
2composeValorManeja varios contenedores definidos en un archivo compose.yaml.
3upValorCrea y arranca todo lo que describe el archivo.
4-dOpciónEn segundo plano.
Resultado

Lee el compose.yaml (o docker-compose.yml) de la carpeta actual y levanta todos sus servicios, por ejemplo una app y su base de datos. Lo detienes con docker compose down.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
runCrea y arranca un contenedor a partir de una imagen. Si no tienes la imagen, la descarga.
psLista los contenedores que están corriendo; con -a incluye los detenidos.
logsMuestra lo que ha impreso un contenedor. Con -f lo sigues en vivo.
execEjecuta un comando dentro de un contenedor que ya está corriendo.
stopDetiene un contenedor de forma ordenada.
rmBorra un contenedor detenido. Con -f también uno que esté corriendo.
imagesLista las imágenes descargadas y cuánto ocupan.
composeLevanta varios contenedores juntos a partir de un archivo compose.yaml: docker compose up -d.
§ 3

Fallas comunes

FallaRemedio
permission denied while trying to connect to the Docker daemon socket.Tu usuario no tiene permiso para hablar con Docker. Usa sudo, o agrégate al grupo con sudo usermod -aG docker $USER y vuelve a iniciar sesión. Ten en cuenta que ese grupo da poder de root.
Port is already allocated al usar -p.Ese puerto de tu equipo ya lo usa otro programa o contenedor. Elige otro (-p 8081:80) o revisa quién lo ocupa con sudo ss -tlnp | grep 8080.
Perder los datos al borrar el contenedor.Lo que se guarda dentro del contenedor se va con él. Para datos que deben durar, como una base de datos, usa un volumen: -v datos:/var/lib/postgresql/data.
Invertir los puertos: -p 80:8080.El orden es tu-equipo:contenedor. Si nginx escucha en el 80 del contenedor y quieres verlo en el 8080 de tu equipo, es -p 8080:80.
§ 4

Preguntas frecuentes

¿Qué es Docker y para qué sirve?
Es una herramienta para correr aplicaciones en contenedores: cajas aisladas que traen el programa con todo lo que necesita. Sirve para instalar y mover servicios sin pelearte con dependencias, y para que funcionen igual en cualquier equipo.
¿Cuál es la diferencia entre una imagen y un contenedor?
La imagen es la plantilla, como un instalador; el contenedor es una copia de esa imagen corriendo. De una misma imagen puedes crear muchos contenedores.
¿Cómo uso docker sin sudo?
Agrega tu usuario al grupo docker: sudo usermod -aG docker $USER, y cierra y vuelve a abrir tu sesión. Hazlo solo en equipos de confianza: pertenecer a ese grupo equivale a tener permisos de root.
¿Cómo veo los contenedores detenidos?
Con docker ps -a. Sin -a solo salen los que están corriendo.
¿Cuál es la diferencia entre docker compose y docker-compose?
Hacen lo mismo. docker compose (con espacio) es la versión actual, integrada en docker; docker-compose (con guion) es la versión vieja que se instalaba aparte.
§ 5

Ver también