Docker sin renegar: comandos basicos para el dia a dia
Apunte rapido con comandos frecuentes para laburar con imagenes y contenedores,
sin ponerse pesado porque Docker ya se encarga de ponernos serios cuando algo
no levanta.
La idea es tener a mano lo basico para el dia a dia: bajar imagenes, crear
contenedores, publicar puertos, revisar logs y limpiar recursos. Sirve como
referencia rapida para laboratorio, practica o para ese momento hermoso en el
que sabes que el comando existe, pero tu memoria se fue a tomar mate.
Probado con
- Docker Engine 28.x
- Docker CLI 28.x
- Comandos basicos compatibles con versiones modernas de Docker
Flujo tipico
Ejemplo completo para levantar Nginx, revisar que este corriendo, mirar logs y
limpiar el contenedor al final. Ordenadito, porque si no despues queda todo
dando vueltas como tupper sin tapa.
docker pull nginx
docker run --name mi-nginx -p 8080:80 -d nginx
docker ps
docker logs mi-nginx
docker stop mi-nginx
docker rm mi-nginx
Imagenes
Descargar una imagen
Por defecto, Docker baja imagenes desde Docker Hub.
docker pull <imagen>
Ejemplo:
docker pull mongo
Tambien podes indicar una version especifica usando tags. Esto es clave si
queres evitar el clasico “ayer andaba” con cara de no entender nada.
docker pull ubuntu:24.04
Listar imagenes locales
Para ver que imagenes tenes descargadas en la maquina:
docker images
Tambien podes usar:
docker image ls
Borrar una imagen
Cuando ya no la necesitas, la podes borrar:
docker image rm <imagen>
Ejemplo:
docker image rm mongo
Si la imagen esta siendo usada por un contenedor, primero tenes que borrar el
contenedor o forzar el borrado. Con -f anda, pero usalo con criterio: no es
un boton de “arreglar todo”, aunque a veces den ganas.
docker image rm -f <imagen>
Contenedores
Crear un contenedor
Crea el contenedor, pero no lo arranca. Queda preparado, como el mate antes del
agua.
docker create <imagen>
Ejemplo:
docker create mongo
Crear un contenedor con nombre
Ponerle nombre ayuda mucho. Despues no tenes que andar copiando IDs eternos
como si fueran CBU.
docker create --name <nombre-contenedor> <imagen>
Ejemplo:
docker create --name monguito mongo
Crear un contenedor con puerto publicado
Formato:
docker create -p <puerto-host>:<puerto-contenedor> --name <nombre-contenedor> <imagen>
Ejemplo:
docker create -p 27017:27017 --name monguito mongo
El primer puerto es el de tu maquina. El segundo es el puerto dentro del
contenedor. Si los mezclas, no pasa nada grave, solo perdes un rato mirando la
pantalla con desconfianza.
Iniciar un contenedor
docker start <nombre-contenedor>
Tambien podes usar el ID del contenedor:
docker start <container-id>
Detener un contenedor
docker stop <nombre-contenedor>
Borrar un contenedor
El contenedor debe estar detenido.
docker rm <nombre-contenedor>
Para borrar un contenedor aunque este corriendo:
docker rm -f <nombre-contenedor>
Usa -f cuando sabes lo que estas bajando. Si es una base con datos que
querias conservar, ahi Docker no te va a abrazar.
Ejecutar contenedores
Descargar, crear e iniciar en un solo paso
docker run baja la imagen si no existe localmente, crea el contenedor y lo
arranca. Es el comando “haceme todo junto, maestro”.
docker run -d <imagen>
Ejemplo:
docker run -d mongo
Ejecutar con nombre y puerto publicado
docker run --name <nombre-contenedor> -p <puerto-host>:<puerto-contenedor> -d <imagen>
Ejemplo:
docker run --name monguito -p 27017:27017 -d mongo
Ejecutar un contenedor temporal
--rm borra el contenedor automaticamente cuando termina. Ideal para pruebas
rapidas y para no dejar basura tecnica en la maquina.
docker run --rm -it <imagen> <comando>
Ejemplo:
docker run --rm -it ubuntu:24.04 bash
Ejecutar con variables de entorno
docker run -e <VARIABLE>=<valor> <imagen>
Ejemplo:
docker run --name mi-nginx -e NGINX_HOST=localhost -d nginx
Las variables de entorno sirven para pasar configuracion sin tocar la imagen.
Para secretos, mejor usar un mecanismo mas prolijo si esto sale del laboratorio.
Ejecutar con volumen
Te permite montar una ruta del host dentro del contenedor.
docker run -v <ruta-host>:<ruta-contenedor> <imagen>
Ejemplo:
docker run --name mi-nginx -v $PWD/html:/usr/share/nginx/html:ro -p 8080:80 -d nginx
El :ro lo monta en solo lectura. Si el contenedor no necesita escribir ahi,
mejor asi: menos chances de que toque algo que despues te haga suspirar fuerte.
Ejecutar un comando dentro de un contenedor
docker exec -it <nombre-contenedor> bash
Si la imagen no tiene bash, proba con sh.
docker exec -it <nombre-contenedor> sh
Esto es util para revisar archivos, probar conectividad o confirmar que el
servicio esta como pensabas. Tambien para descubrir que no estaba como pensabas,
que es parte del oficio.
Consultas y logs
Ver contenedores corriendo
docker ps
Ver todos los contenedores
Incluye tambien los contenedores detenidos.
docker ps -a
Ver logs de un contenedor
docker logs <nombre-contenedor>
Con timestamps:
docker logs -t <nombre-contenedor>
Seguir logs en tiempo real:
docker logs -f <nombre-contenedor>
Los logs son el primer lugar para mirar cuando algo no arranca. Antes de tocar
cinco cosas a la vez, miralos. Tu yo del futuro te lo va a agradecer.
Ver informacion detallada
docker inspect <nombre-contenedor>
inspect devuelve mucha informacion en JSON: redes, mounts, variables,
configuracion y demas. Es largo, pero cuando necesitas saber que esta pasando,
es una linterna bastante potente.
Limpieza
Ojo: antes de ejecutar comandos de limpieza, revisa que no tengas contenedores,
imagenes o recursos importantes en la maquina. Limpiar esta buenisimo; limpiar
de mas es deporte extremo.
Borrar contenedores detenidos
docker container prune
Borrar imagenes sin uso
docker image prune
Borrar recursos sin uso
Borra contenedores detenidos, redes sin uso, imagenes dangling y cache de build.
docker system prune
Si queres ir mas fuerte, Docker tiene opciones mas agresivas, pero antes de
usarlas conviene leer bien que van a borrar. En produccion, doble chequeo y
respiracion profunda.
