🐳 Comandos Esenciales de Docker para PreTeXt
Este post recopila los comandos más útiles de Docker que probablemente necesitarás al trabajar con imágenes y contenedores para PreTeXt.
Sirve como una chuleta rápida (cheat sheet) para escribir, compilar y servir libros desde un entorno aislado.
💡 Antes de usar el clip ▶️ o ejecutar cualquier comando de compilación, asegúrate de que Docker Desktop (Docker Engine) esté levantado y en ejecución. Sin el motor activo, los contenedores no podrán iniciarse y los procesos de construcción fallarán.
📦 1. Ver imágenes disponibles
docker images
Lista todas las imágenes que tienes en tu máquina.
🚮 2. Eliminar imágenes
Eliminar una imagen específica:
docker rmi <IMAGE_ID>
Forzar la eliminación si está en uso:
docker rmi -f <IMAGE_ID>
Eliminar imágenes no usadas:
docker image prune -a
🛑 3. Manejar contenedores
Listar contenedores activos:
docker ps
Listar todos (incluyendo detenidos):
docker ps -a
Detener un contenedor:
docker stop <CONTAINER_ID>
Eliminar un contenedor:
docker rm <CONTAINER_ID>
🔄 4. Salir y reanudar un contenedor
Cuando entras a un contenedor con docker run -it ... bash, tienes tres escenarios:
Salir con
exitoCtrl+D
El contenedor se detiene pero no se borra.
Para retomarlo donde quedó:docker start -ai <CONTAINER_ID>Detenerlo con
docker stop
Igual que arriba: queda detenido y puedes retomarlo condocker start -ai.Eliminarlo con
docker rm
Se borra por completo. Si lo necesitas otra vez, deberás crear uno nuevo condocker run.
👉 Consejo: reutiliza contenedores con docker start -ai en lugar de correr docker run cada vez. Así evitas acumular decenas de contenedores innecesarios.
🏗️ 5. Construir imágenes
Por defecto, Docker busca un archivo llamado Dockerfile en el directorio actual.
Construir desde un Dockerfile llamado exactamente Dockerfile en el directorio actual:
docker build -t pretext-es-web .
Si tu archivo tiene un nombre diferente (ejemplo Dockerfile.curso, Dockerfile.latex), debes usar la opción -f para indicarlo explícitamente.
docker build -t pretext-es-web -f Dockerfile.curso .
▶️ 6. Ejecutar contenedores
Ejecutar de forma interactiva:
docker run -it -v ${PWD}:/workspace pretext-es-web bash
Ejecutar mapeando un puerto (para ver el libro en el navegador):
docker run -it -p 8080:8080 -v ${PWD}:/workspace pretext-es-web bash
🌐 7. Servir un proyecto
Dentro del contenedor:
cd /workspace/new-pretext-project/output/web
python3 -m http.server 8080 --bind 0.0.0.0
Y en tu navegador: 👉 http://localhost:8080
📚 8. Tips para MetaLibros
- Volúmenes montados: usa
-v ${PWD}:/workspacepara que los cambios en tu máquina se vean dentro del contenedor. - Persistencia: si quieres mantener un contenedor “de trabajo” con dependencias listas, no lo borres; solo deténlo y retómalo con
docker start -ai. - Backups: guarda tu carpeta de proyectos (
/workspace) en Git o en otro repositorio, así puedes reconstruir la imagen sin perder nada. - Aislamiento: cada libro o proyecto puede correr en su propio contenedor, pero no repitas imágenes: compártelas con
-v.
💾 9. Respaldar y restaurar imágenes
Respaldar una imagen en un archivo .tar (ejemplo en Windows con disco externo M:):
docker save -o "M:\Respaldo_Docker\pretext-cli.tar" pretext-cli:latest
Restaurar la imagen desde el respaldo:
docker load -i "M:\Respaldo_Docker\pretext-cli.tar"
👉 Esto es útil para mover imágenes grandes (ej. 9 GB) entre equipos o hacer backups en SSD externos.
🔁 10. Reingresar a un contenedor detenido
Si saliste con exit o lo detuviste con docker stop, el contenedor queda detenido pero no se borra.
Para volver a entrar en el mismo estado:
docker ps -a # listar contenedores (incluye los detenidos)
docker start -ai <ID> # reanudar y entrar en modo interactivo
👉 Usa docker start -ai en lugar de crear contenedores nuevos con docker run, así mantienes tu entorno de trabajo.
💽 11. Recuperar la imagen tar y usarla en tu directorio de trabajo
Si ya cargaste la imagen desde tu archivo .tar:
docker load -i "M:\Respaldo_Docker\pretext-cli.tar"
Ahora puedes crear un nuevo contenedor montando tu carpeta de proyectos (${PWD} en Linux/Mac o %cd% en Windows PowerShell) al directorio de trabajo /workspace del contenedor:
docker run -it -v ${PWD}:/workspace pretext-cli:latest bash # Linux, a veces funciona en PS
docker run -it -v ${PWD}.Path:/workspace pretext-cli:latest bash # forma correcta en PowerShell
👉 Si ya tenías un contenedor previo detenido, recuerda que puedes retomarlo directamente con:
docker start -ai <CONTAINER_ID>
🧹 12. Conocer el espacio ocupado por las imagenes, contenedores y otros de Docker
📊 Antes de limpiar, revisa el espacio usado y simulación de limpieza
Ver el espacio ocupado por Docker y cuánto se podría liberar:
docker system df
Simular lo que borraría docker system prune sin ejecutar nada:
docker system prune -a --volumes --dry-run
Si quieres simular solo imágenes:
docker image prune -a --dry-run
O solo volúmenes:
docker volume prune --dry-run
⚠️ Consejo: siempre revisa con –dry-run antes de una limpieza total. docker volume prune –dry-run
✅ Estrategia segura: marcar las imágenes a conservar
Antes de limpiar, crea contenedores “dummy” que se paren inmediatamente pero que mantengan vivas las imágenes asociadas:
docker run --name keep-pretext-curso pretext-curso true
docker run --name keep-ubuntu ubuntu true
docker run --name keep-hello hello-world
Estos contenedores se ejecutan una vez y se detienen, pero sirven para proteger las imágenes.
🧽 13. Ahora sí, limpieza profunda ejecutar el comando prune
Con las imágenes protegidas, puedes limpiar sin riesgo:
docker system prune -a --volumes -f
Esto borra:
- Contenedores que no uses
- Imágenes sin contenedores asociados
- Cachés y capas intermedias
- Redes no usadas
- Volúmenes huérfanos
👉 Es decir, si no las proteges preciamente, podrías perder imágenes que quieres conservar.
🗑️ Eliminar los contenedores dummy
Si ya no quieres mantener los contenedores de protección:
docker rm keep-pretext-curso keep-ubuntu keep-hello
👉 Las imágenes se conservarán aunque borres estos contenedores.
✅ Con esta técnica puedes hacer una limpieza total de tu sistema Docker sin preocuparte de borrar accidentalmente las imágenes clave de tu flujo de trabajo.
🧹 14. Si quieres limpiar todo lo no usado (opcional y potente)
docker system prune -a
⚠️ Elimina imágenes, contenedores, redes y cachés no usadas. Úsalo con cuidado.
🐳 Paso 15: Verificación y Mantenimiento de Espacio
Este paso explica cómo verificar el espacio real ocupado por Docker, cómo manejar los cachés de construcción y cómo evitar que OneDrive llene tu disco local innecesariamente.
🔍 15.1 Verificar consumo real de Docker
Antes de hacer cualquier limpieza en tu máquina, revisa qué tanto espacio ocupan realmente las imágenes, contenedores y volúmenes de Docker:
docker system df
Esto muestra:
- Images → espacio usado por imágenes descargadas o construidas.
- Containers → contenedores activos o detenidos.
- Local Volumes → volúmenes persistentes.
- Build Cache → caché de construcción de imágenes.
👉 Si todos los valores aparecen en 0B, significa que Docker ya no ocupa espacio en tu disco.
📦 15.2 Imágenes y build cache
- Una imagen final (ej.
pretext-curso:latest) es lo que usas al ejecutar un contenedor. - El build cache son capas intermedias guardadas por Docker para acelerar futuras compilaciones de imágenes.
- Los contenedores no usan el cache, solo la imagen final.
✅ Puedes borrar el cache sin afectar tus contenedores:
docker builder prune -a
Esto elimina todas las capas intermedias y recupera espacio.
⚠️ Única desventaja: la próxima vez que compiles una imagen, Docker tendrá que rehacer todo desde cero (descargas, instalaciones, etc.), lo que será más lento.
📂 15.3 Revisar el archivo de disco de Docker
Docker en Windows con WSL2 guarda todo dentro de un archivo ext4.vhdx, ubicado en:
C:\Users\<TU_USUARIO>\AppData\Local\Docker\wsl\main\ext4.vhdx
Ese archivo puede crecer aunque borres imágenes. Para compactarlo y recuperar espacio físico:
Método universal con diskpart
Abre PowerShell como Administrador y escribe:
diskpartDentro de
diskpart, ejecuta:select vdisk file="C:\Users\<TU_USUARIO>\AppData\Local\Docker\wsl\main\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exitReinicia Docker Desktop para aplicar los cambios.
☁️ 15.4 Manejo de OneDrive
Muchas veces Windows muestra que tu disco está lleno cuando realmente el espacio ocupado proviene de OneDrive sincronizado.
Pasos recomendados:
Verifica el tamaño local real
- Haz clic derecho sobre
C:\Users\<TU_USUARIO>\OneDrive...→ Propiedades. - Observa el campo Tamaño en disco (ese es el que ocupa localmente, no el “tamaño total” en la nube).
- Haz clic derecho sobre
Liberar espacio local sin borrar archivos de la nube
- Haz clic derecho sobre la carpeta
OneDriveo archivos pesados → selecciona “Liberar espacio”. - Esto elimina los datos locales y deja solo accesos directos a la nube.
- Haz clic derecho sobre la carpeta
Desactivar o mover OneDrive
- Si no quieres que OneDrive use tu SSD principal:
- Abre la aplicación de OneDrive.
- Ve a Configuración > Cuenta > Desvincular esta PC.
- Luego reconfigura la sincronización en otro disco (ejemplo, un SSD externo).
- Si no quieres que OneDrive use tu SSD principal:
✅ 15.5 Flujo recomendado
Corre siempre primero:
docker system dfpara confirmar si Docker ocupa espacio.
Si Docker no ocupa nada → pasa a revisar OneDrive.
Si Docker muestra mucho espacio en Build Cache → limpia con:
docker builder prune -aSi el archivo
ext4.vhdxsigue muy grande → compacta condiskpart.Finalmente, revisa la configuración de OneDrive para liberar espacio local.
📌 Con este procedimiento tienes control tanto del espacio usado por Docker como por OneDrive, y evitas perder gigas en tu disco principal.
✅ Con estos comandos tienes lo esencial para crear, ejecutar, reanudar, limpiar, respaldar y servir tus proyectos de PreTeXt con Docker en tu flujo de trabajo con MetaLibros.
Ver autoría:
✍️ Autor: Rommel Contreras
📅 Septiembre 2025
