¿Ya dominas lo básico? Un curso estructurado de Docker es la vía rápida para dar el salto.
Ver cursos de Docker en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02¿Qué es Docker?
- 03Comprobar la versión con docker --version
- 04Imágenes y contenedores
- 05Descargar una imagen con docker pull
- 06Listar las imágenes con docker images
- 07Arrancar un contenedor con docker run
- 08Dejarlo en segundo plano con docker run -d
- 09Listar los contenedores en marcha con docker ps
- 10Listar todos los contenedores con docker ps -a
- 11Ponerle nombre a un contenedor con docker run --name
- 12Detener un contenedor con docker stop
- 13Volver a arrancar un contenedor parado con docker start
- 14Reiniciar con docker restart
- 15Borrar un contenedor con docker rm
- 16Borrar una imagen con docker rmi
- 17Publicar un puerto con docker run -p
- 18Pasar variables de entorno con docker run -e
- 19Montar un volumen con docker run -v
- 20Ejecutar órdenes dentro de un contenedor con docker exec
- 21Leer los registros con docker logs
- 22Ver los detalles con docker inspect
- 23Ver los procesos con docker top
- 24Vigilar el consumo con docker stats
- 25Copiar archivos con docker cp
- 26¿Qué es un Dockerfile?
- 27Elegir la imagen base con FROM
- 28Fijar el directorio de trabajo con WORKDIR
- 29Añadir archivos con COPY
- 30Ejecutar órdenes con RUN
- 31Fijar la orden de arranque con CMD
- 32Declarar puertos con EXPOSE
- 33Construir una imagen con docker build
- 34Etiquetar una imagen con docker tag
- 35Compartir una imagen con docker push
- 36¿Qué es .dockerignore?
- 37¿Qué es una construcción multietapa?
- 38Crear un volumen con docker volume create
- 39Listar los volúmenes con docker volume ls
- 40Crear una red con docker network create
- 41Listar las redes con docker network ls
- 42¿Qué es Docker Compose?
- 43Levantar todo con docker compose up
- 44Parar todo con docker compose down
- 45Limpiar con docker system prune
Montar un volumen con docker run -v
En esta lección conservarás datos más allá de la vida del contenedor.
docker run -v /data:/var/lib/data nginx monta una carpeta del anfitrión dentro del contenedor. El orden es el mismo que en los puertos: anfitrión:contenedor.
Esta es la respuesta al problema que apareció en la lección 3: lo que se escribe dentro de un contenedor muere con él. Lo que se escribe en un volumen sobrevive, aunque borres el contenedor y crees otro.
Hay dos formas y conviene distinguirlas. Un bind mount, como el del ejemplo, comparte una carpeta concreta de tu máquina: es lo que se usa en desarrollo para editar código y ver el cambio al instante. Un volumen con nombre lo gestiona Docker en su propio espacio: es lo que se usa en producción para los datos de una base de datos.
El comportamiento que más sorprende: montar sobre una carpeta que ya tenía contenido lo oculta. Los archivos de la imagen siguen ahí pero dejan de verse, tapados por lo que hay en el anfitrión. Si esa carpeta estaba vacía, el contenedor arranca sin los archivos que esperaba y falla de forma desconcertante.
En Mac y Windows hay además una diferencia de rendimiento notable con muchos archivos pequeños, porque hay una capa de traducción de por medio.
🧑💻 Puedes escribir este comando en la terminal simulada de Docker para probarlo tú mismo (esta página no incluye terminal interactiva).
