title: "Comandos básicos de Docker"
Comandos básicos de Docker
Al terminar esta parte deberás ser capaz de:
- Descargar y consultar imágenes.
- Crear, arrancar, parar y eliminar contenedores.
- Entender los estados básicos de un contenedor.
- Ejecutar comandos dentro de un contenedor.
- Consultar logs e información de un contenedor.
- Publicar puertos.
- Compartir directorios entre el anfitrión y un contenedor.
- Modificar un contenedor y crear una nueva imagen con
commit. - Entender la diferencia entre una imagen y un contenedor.
- Crear manualmente un entorno con PHP + Apache.
En este tema vamos a trabajar con Docker principalmente desde la terminal.
El objetivo no es memorizar comandos, sino entender sobre qué elemento estamos actuando y qué cambio estamos produciendo.
Podemos resumir inicialmente nuestro trabajo en:
IMAGEN
│
│ create / run
▼
CONTENEDOR
│
│ start / stop
▼
EJECUCIÓN
│
├── exec
├── logs
├── inspect
└── ...1. Trabajar con imágenes
Una imagen es una plantilla de solo lectura a partir de la cual Docker puede crear contenedores.
Una imagen puede utilizarse para crear uno o muchos contenedores.
Descargar una imagen: docker pull
Descarga una imagen desde un registry. Si no indicamos otro, Docker utiliza Docker Hub.
Por ejemplo:
docker pull ubuntu:24.04Podemos leerlo como:
Descarga la imagen
ubuntucon la etiqueta24.04.
La parte situada después de : es el tag:
ubuntu:24.04
│ │
│ └── tag
└────────── nombre de la imagenEvita depender de latest
En muchos ejemplos encontrarás:
docker pull ubuntu:latestpero para trabajar con entornos reproducibles es preferible indicar explícitamente la versión:
docker pull ubuntu:24.04latest puede apuntar en el futuro a una versión diferente.
Ver las imágenes disponibles: docker images
Muestra las imágenes disponibles localmente.
docker imagesObserva especialmente:
REPOSITORY
TAG
IMAGE ID
CREATED
SIZEBuscar imágenes: docker search
También podemos buscar imágenes disponibles en Docker Hub:
docker search ubuntuDocker Hub
docker search realiza una búsqueda en Docker Hub.
Para buscar imágenes desde un navegador utilizaremos normalmente la propia web de Docker Hub, donde podremos consultar también documentación, tags y ejemplos de utilización.
Actividad
Comprueba tus imágenes
Ejecuta:
docker imagesLocaliza la imagen ubuntu que acabas de descargar e identifica:
- El nombre de la imagen.
- Su tag.
- Su identificador.
- Su tamaño.
Explica qué representa cada dato.
2. Crear un contenedor
Un contenedor es una instancia creada a partir de una imagen que podemos ejecutar, detener y eliminar.
Podemos crear un contenedor sin arrancarlo:
docker create --name prueba ubuntu:24.04Crea un contenedor a partir de una imagen, pero no lo ejecuta.
La opción:
--name pruebaasigna el nombre prueba al contenedor.

Podemos comprobar que el contenedor existe:
docker ps -aDeberíamos encontrarlo en estado:
CreatedPregunta
Piensa antes de continuar
¿Podríamos ejecutar ahora:
docker exec -it prueba bash¿Por qué?
3. Estados de un contenedor
Antes de continuar es importante entender que un contenedor puede encontrarse en diferentes estados.

Para empezar nos interesan especialmente:
| Estado | Qué significa |
|---|---|
| Created | El contenedor existe, pero todavía no se ha iniciado. |
| Running / Up | El proceso principal del contenedor está ejecutándose. |
| Paused | Los procesos del contenedor están temporalmente suspendidos. |
| Exited | El proceso principal ha terminado y el contenedor está detenido. |
Estado y comandos
El estado del contenedor determina qué operaciones podemos realizar.
Por ejemplo, docker exec necesita que el contenedor se encuentre en estado Running.
Consultar contenedores
Para ver los contenedores en ejecución:
docker psPara ver todos, independientemente de su estado:
docker ps -adocker ps muestra los contenedores en ejecución.
Con -a mostramos todos los contenedores.
4. Arrancar un contenedor: docker start
Un contenedor en estado Created puede iniciarse mediante:
docker start pruebaArranca un contenedor que ya existe.
Es importante distinguir:
docker create
│
▼
Created
│
│ docker start
▼
Running
Create no es Start
docker create crea el contenedor.
docker start arranca un contenedor que ya existe.
Son dos operaciones diferentes.
5. docker run: crear y arrancar
En la práctica utilizaremos con mucha frecuencia:
docker runPodemos entender inicialmente:
docker run ≈ docker create + docker startPor ejemplo:
docker run --name prueba2 ubuntu:24.04Crea un nuevo contenedor a partir de una imagen y lo arranca.
run crea un contenedor nuevo
Cada vez que ejecutamos:
docker run ...estamos solicitando la creación de otro contenedor.
Si el contenedor ya existe y queremos volver a arrancarlo utilizamos:
docker start nombre--name: poner nombre al contenedor
docker run --name servidor ubuntu:24.04Sin --name, Docker asignará automáticamente un nombre.
-it: trabajar de forma interactiva
Podemos ejecutar:
docker run -it --name servidor ubuntu:24.04 bashLas opciones:
-i interactive
-t terminalse utilizan habitualmente juntas:
-itAhora tendremos una terminal dentro del contenedor.
Para salir:
exitActividad
Comprueba qué ha ocurrido
Después de salir ejecuta:
docker ps
docker ps -a¿En qué estado está servidor?
Explica por qué ha cambiado de estado al ejecutar exit.
--rm: contenedores temporales
Podemos indicar a Docker que elimine automáticamente el contenedor cuando termine:
docker run --rm -it ubuntu:24.04 bashEsto resulta muy útil para pruebas.
6. Ejecutar en segundo plano: -d
Un servidor normalmente debe continuar funcionando aunque recuperemos nuestro terminal.
Para ello utilizamos:
-dde detached.
Por ejemplo:
docker run -d --name web php:8.3-apacheEl contenedor continúa ejecutándose en segundo plano.
Compruébalo:
docker ps7. Ejecutar comandos dentro del contenedor: docker exec
Con un contenedor funcionando podemos ejecutar comandos en su interior:
docker exec -it web bashEjecuta un comando dentro de un contenedor que ya está en ejecución.
Una vez dentro podemos utilizar comandos Linux:
pwd
ls
whoami
cat /etc/os-releaseEn nuestro contenedor PHP podemos comprobar:
php -v
apache2 -vPara salir:
exitexec necesita un contenedor en ejecución
No podemos ejecutar:
docker exec ...sobre un contenedor que se encuentre en estado Created o Exited.
Debe estar:
Running / Up8. Consultar los logs
Los contenedores ejecutan procesos y estos pueden generar información por su salida estándar y salida de error.
Podemos consultar esa información con:
docker logs webMuestra los logs generados por el proceso principal del contenedor.
Para seguir los logs en tiempo real:
docker logs -f webLa opción:
-fsignifica follow.
Para mostrar únicamente las últimas líneas:
docker logs --tail 20 web9. Inspeccionar un contenedor
Docker almacena mucha información sobre cada contenedor:
- Imagen utilizada.
- Estado.
- Dirección IP.
- Puertos.
- Volúmenes.
- Redes.
- Variables de entorno.
- Configuración.
Podemos consultarla mediante:
docker inspect webMuestra información detallada sobre un objeto Docker.
La salida está en formato JSON.
Actividad
Busca información
Ejecuta:
docker inspect webIntenta localizar:
- El estado del contenedor.
- La imagen utilizada.
- Su dirección IP.
- Los puertos configurados.
No necesitas comprender todavía toda la información mostrada.
10. Publicar puertos
Supongamos que Apache escucha en:
puerto 80dentro del contenedor.
Eso no significa automáticamente que podamos acceder desde el navegador de nuestro ordenador.
Tenemos que publicar el puerto:
docker run -d \
--name web \
-p 8800:80 \
php:8.3-apacheLa expresión:
8800:80significa:
HOST CONTENEDOR
puerto 8800 ─────────────► puerto 80Ahora podemos acceder desde el navegador a:
http://localhost:8800Pregunta
Comprueba que lo entiendes
En:
-p 8800:80- ¿Qué puerto pertenece al anfitrión?
- ¿Qué puerto pertenece al contenedor?
- ¿En qué puerto está escuchando realmente Apache?
11. Compartir una carpeta con el contenedor
Queremos editar nuestros ficheros PHP desde PhpStorm o VS Code y que Apache, dentro del contenedor, pueda utilizarlos.
Creamos:
mkdir appy dentro:
app/index.phpPor ejemplo:
<?php
echo "Hola desde Docker";Podemos compartir ese directorio con el contenedor:
docker run -d \
--name web \
-p 8800:80 \
-v "$PWD/app:/var/www/html" \
php:8.3-apacheLa opción:
-v "$PWD/app:/var/www/html"relaciona:
HOST CONTENEDOR
./app ───────────► /var/www/html
index.php index.phpUn bind mount permite montar un directorio del anfitrión dentro del sistema de archivos del contenedor.
Los ficheros continúan estando físicamente en nuestro equipo y podemos modificarlos utilizando nuestro IDE.
Modifica ahora index.md y recarga:
http://localhost:8800El cambio debería aparecer inmediatamente.
La carpeta no forma parte de la imagen
Los ficheros del bind mount viven en el anfitrión.
Por tanto, modificar:
./app/index.phpno modifica la imagen Docker.
Esta diferencia será importante cuando estudiemos docker commit y posteriormente Dockerfile.
12. Modificar un contenedor
Hasta ahora hemos utilizado imágenes ya preparadas.
Pero podemos partir de una imagen sencilla y modificar manualmente un contenedor.
Creamos uno basado en Ubuntu:
docker run -it --name servidor ubuntu:24.04 bashDentro podemos instalar software:
apt update
apt install -y apache2 phpComprobamos:
php -v
apache2 -vAhora nuestro contenedor ya no es exactamente igual que la imagen original.
Partimos de:
ubuntu:24.04pero hemos añadido:
Apache
PHP
dependencias
configuraciones13. Ver los cambios: docker diff
Docker puede mostrarnos qué cambios se han producido en el sistema de archivos del contenedor:
docker diff servidorMuestra los cambios realizados en el sistema de archivos del contenedor respecto a su imagen.
En la salida podemos encontrar:
A añadido
C modificado
D eliminadoImagen y capa escribible
La imagen original no se modifica.
Los cambios que realizamos se almacenan en la capa escribible del contenedor.
Esto explica por qué podemos crear muchos contenedores independientes partiendo de la misma imagen.
14. Crear una imagen desde un contenedor: docker commit
Tenemos ahora:
ubuntu:24.04
│
│ docker run
▼
┌──────────────────────┐
│ servidor │
│ │
│ + Apache │
│ + PHP │
│ + modificaciones │
└──────────────────────┘Podemos convertir el estado del contenedor en una nueva imagen:
docker commit servidor php-apache:v1Crea una nueva imagen a partir de los cambios realizados en un contenedor.
El proceso puede visualizarse así:
ubuntu:24.04
│
│ docker run
▼
servidor
│
│ instalamos Apache + PHP
▼
contenedor modificado
│
│ docker commit
▼
php-apache:v1Comprueba que la nueva imagen existe:
docker imagesAhora tenemos dos imágenes diferentes:
ubuntu:24.04
php-apache:v1Los volúmenes no forman parte del commit
Los datos que se encuentren en volúmenes o bind mounts no se incorporan a la nueva imagen mediante docker commit.
commit recoge los cambios realizados en el sistema de archivos propio del contenedor.
15. Crear otro contenedor desde nuestra imagen
La mejor forma de comprobar que realmente hemos creado una imagen es crear otro contenedor.
docker run -it --name servidor2 php-apache:v1 bashDentro:
php -v
apache2 -vPHP y Apache deberían estar ya instalados.
¿Por qué?
Porque ahora forman parte de:
php-apache:v1y no los hemos instalado en servidor2.
Pregunta
Imagen frente a contenedor
Tenemos:
php-apache:v1y hemos creado:
servidor2¿Cuál de los dos es la imagen?
¿Cuál es el contenedor?
¿Podríamos crear servidor3, servidor4 y servidor5 a partir de la misma imagen?
16. Consultar las capas: docker history
Podemos consultar cómo está formada una imagen mediante:
docker history php-apache:v1Muestra el historial de capas que forman una imagen.
Esto nos ayuda a entender que una imagen Docker no es simplemente un único fichero monolítico, sino que está formada por capas.
17. ¿Por qué necesitaremos un Dockerfile?
Hemos conseguido crear nuestra propia imagen:
php-apache:v1pero piensa en cómo lo hemos hecho:
1. Crear contenedor
2. Entrar
3. apt update
4. instalar Apache
5. instalar PHP
6. realizar modificaciones
7. docker commitPregunta
Reproducibilidad
Si entregásemos únicamente:
php-apache:v1a otro compañero:
¿Sabría exactamente todos los pasos que hemos realizado?
¿Podría reconstruir automáticamente la misma imagen?
¿Y dentro de seis meses recordaríamos nosotros todos esos pasos?
docker commit nos ha permitido comprender cómo un contenedor modificado puede convertirse en una imagen.
Pero no es la forma adecuada de documentar y automatizar la construcción de nuestras imágenes.
En el siguiente tema utilizaremos un:
Dockerfiledonde escribiremos las instrucciones necesarias para construir la imagen de forma declarativa, repetible y versionable.
AHORA SIGUIENTE TEMA
contenedor Dockerfile
│ │
│ modificaciones │ instrucciones
│ manuales │
▼ ▼
docker commit docker build
│ │
└────────────► IMAGEN ◄─────────────┘18. Parar y volver a arrancar
Para detener un contenedor:
docker stop webSolicita la finalización del proceso principal del contenedor.
Comprueba:
docker ps
docker ps -aEl contenedor sigue existiendo.
Simplemente está detenido.
Para volver a arrancarlo:
docker start webstop no elimina
Después de:
docker stop webel contenedor continúa existiendo.
Por eso podemos volver a ejecutar:
docker start websin crearlo de nuevo.
También disponemos de:
docker restart webque realiza una parada y posterior arranque.
19. Pausar un contenedor
Podemos suspender temporalmente sus procesos:
docker pause webY reanudarlos:
docker unpause webLa diferencia conceptual es:
pause
│
└── los procesos quedan congelados
stop
│
└── el proceso principal terminaActividad
Pause frente a Stop
Arranca un contenedor interactivo.
Desde otro terminal ejecuta:
docker pause nombreObserva qué ocurre.
Después:
docker unpause nombreFinalmente prueba:
docker stop nombreExplica la diferencia observada.
20. Eliminar contenedores
Para eliminar un contenedor:
docker rm webNormalmente deberá estar detenido previamente:
docker stop web
docker rm webPodemos forzar la eliminación:
docker rm -f webstop y rm son diferentes
docker stopdetiene el contenedor.
docker rmelimina el contenedor.
Un contenedor detenido sigue existiendo.
21. Eliminar imágenes
Para eliminar una imagen:
docker rmi php-apache:v1Elimina una imagen local.
Docker puede impedir eliminar una imagen si todavía existen contenedores que dependen de ella.
rm frente a rmi
No confundas:
docker rmcon:
docker rmiPodemos recordarlo como:
rm → remove container
rmi → remove image22. Monitorizar recursos: docker stats
Podemos observar el consumo de recursos de los contenedores:
docker statsLa información incluye, entre otros:
- CPU.
- Memoria.
- Red.
- Procesos.
Para salir:
Ctrl + CObservabilidad básica
docker ps, docker logs, docker inspect y docker stats responden a preguntas diferentes:
docker ps → ¿qué está ejecutándose?
docker logs → ¿qué está diciendo el proceso?
docker inspect → ¿cómo está configurado?
docker stats → ¿qué recursos está consumiendo?23. Espacio utilizado por Docker
Docker puede acumular:
- Imágenes.
- Contenedores.
- Volúmenes.
- Caché de construcción.
Podemos consultar el espacio utilizado mediante:
docker system dfPara obtener más detalle:
docker system df -v24. Guardar y cargar imágenes
Podemos guardar una imagen en un fichero:
docker image save -o php-apache.tar php-apache:v1Y posteriormente recuperarla:
docker image load -i php-apache.tarEsto permite transportar una imagen sin necesidad de utilizar un registry.
php-apache:v1
│
│ docker image save
▼
php-apache.tar
│
│ copiar fichero
▼
OTRO EQUIPO
│
│ docker image load
▼
php-apache:v1save/load no es export/import
Para trabajar con imágenes utilizaremos:
docker image save
docker image loaddocker export y docker import trabajan con el sistema de archivos de un contenedor y tienen una finalidad diferente.
25. Docker Hub: login, tag y push
Hasta ahora hemos descargado imágenes:
docker pull ubuntu:24.04Pero también podemos publicar nuestras propias imágenes en un registry.
Primero iniciamos sesión:
docker loginPara publicar una imagen en Docker Hub necesitaremos etiquetarla con el nombre correspondiente al repositorio:
docker tag php-apache:v1 usuario/php-apache:v1Y después:
docker push usuario/php-apache:v1El flujo sería:
IMAGEN LOCAL
php-apache:v1
│
│ docker tag
▼
usuario/php-apache:v1
│
│ docker push
▼
DOCKER HUBOtro usuario podría posteriormente ejecutar:
docker pull usuario/php-apache:v1tag no duplica la imagen
docker tag no crea una copia completa de la imagen.
Crea otra referencia o nombre para identificarla.
Puedes comprobarlo observando el IMAGE ID mediante:
docker images26. Limpieza
Durante las prácticas iremos creando imágenes y contenedores.
Podemos eliminar recursos no utilizados mediante:
docker system pruneUtiliza prune con cuidado
No utilices:
docker system prunesimplemente porque quieres «dejar Docker limpio».
El comando elimina recursos que Docker considera no utilizados.
Especialmente peligroso puede ser añadir:
--volumesporque puede eliminar datos persistentes.
Antes de borrar, debemos saber qué estamos eliminando y por qué.
27. Mapa de comandos
Llegados a este punto podemos clasificar los comandos según el objeto sobre el que actúan.
Imágenes
docker pull
docker images
docker search
docker history
docker rmi
docker image save
docker image load
docker tag
docker pushContenedores
docker create
docker run
docker start
docker stop
docker restart
docker pause
docker unpause
docker ps
docker exec
docker logs
docker inspect
docker diff
docker stats
docker rmDe contenedor a imagen
docker commitSistema Docker
docker system df
docker system pruneDos preguntas fundamentales
Cuando dudes sobre qué comando necesitas, empieza preguntándote:
1. ¿Estoy trabajando con una imagen o con un contenedor?
Y, si estás trabajando con un contenedor:
2. ¿En qué estado se encuentra?
Entender estas dos cuestiones es más importante que memorizar una lista de comandos.
Práctica — De Ubuntu a nuestro servidor PHP + Apache
En esta práctica vamos a recorrer el ciclo completo:
IMAGEN BASE
ubuntu:24.04
│
▼
CONTENEDOR
servidor
│
│ instalar
▼
Apache + PHP
│
│ docker commit
▼
NUEVA IMAGEN
php-apache:v1
│
▼
NUEVO CONTENEDOR
│
│ publicar puerto
▼
NAVEGADOREl objetivo no es únicamente conseguir que funcione.
Debes ser capaz de explicar qué estás haciendo en cada paso.
Parte 1 — Obtener la imagen
Descarga:
ubuntu:24.04Después comprueba que está disponible localmente.
Debes identificar:
- Nombre.
- Tag.
- IMAGE ID.
- Tamaño.
Actividad
Documenta el paso
Indica:
- Qué comando has utilizado.
- Qué hace.
- De dónde se ha descargado la imagen.
- Qué significa
24.04. - Cómo has comprobado que la imagen está disponible.
Parte 2 — Crear nuestro primer contenedor
Crea un contenedor llamado:
servidorpero sin arrancarlo inicialmente.
Utiliza para ello el comando estudiado en este tema.
Comprueba después su estado.
Actividad
Explica
Debes indicar:
- Qué comando has utilizado.
- Qué imagen has utilizado.
- Para qué sirve
--name. - En qué estado queda el contenedor.
- Cómo has comprobado dicho estado.
Parte 3 — Arrancar el contenedor
Arranca:
servidorsin crear otro contenedor.
Comprueba nuevamente su estado.
Pregunta
Para pensar en clase
¿Cuál es la diferencia entre:
docker create
docker start
docker run?
Explícalo con tus propias palabras.
Parte 4 — Trabajar dentro del contenedor
Debes conseguir una terminal interactiva dentro del contenedor.
Una vez dentro identifica:
cat /etc/os-releasey comprueba si están instalados:
php -v
apache2 -vActividad
Explica
Indica:
- Qué comando utilizas para ejecutar algo dentro de un contenedor.
- Qué significan
-iy-t. - En qué estado debe encontrarse el contenedor.
- Qué resultado obtienes al consultar PHP y Apache.
Parte 5 — Instalar PHP y Apache
Dentro del contenedor instala:
- Apache.
- PHP.
Comprueba posteriormente sus versiones.
No continúes hasta poder ejecutar correctamente:
php -v
apache2 -vActividad
Explica
Documenta:
- Los comandos ejecutados.
- Para qué sirve cada uno.
- Qué software has instalado.
- Cómo has comprobado que la instalación ha funcionado.
Parte 6 — Observar los cambios
Desde el anfitrión utiliza:
docker diff servidorAnaliza parte de su salida.
Pregunta
Para pensar en clase
¿Por qué aparecen ahora tantos cambios si nuestra imagen original era:
ubuntu:24.04?
¿Qué representan:
A
C
D?
Parte 7 — Crear nuestra propia imagen
A partir del contenedor:
servidorcrea una imagen llamada:
php-apache:v1Comprueba después que aparece entre tus imágenes locales.
Actividad
Explica
Debes indicar:
- Qué comando has utilizado.
- Qué elemento es
servidor. - Qué elemento es
php-apache:v1. - Qué significa
v1. - Qué relación existe entre
ubuntu:24.04yphp-apache:v1.
Parte 8 — Investigar nuestra imagen
Consulta:
docker history php-apache:v1y compara el resultado con:
docker history ubuntu:24.04Pregunta
Para pensar en clase
¿Qué diferencias observas?
¿Puedes relacionarlas con los cambios que realizaste en el contenedor?
Parte 9 — La prueba definitiva
Crea un nuevo contenedor a partir de:
php-apache:v1No vuelvas a instalar PHP ni Apache.
Comprueba directamente:
php -v
apache2 -vPregunta
Para pensar en clase
¿Por qué están instalados PHP y Apache si nunca los has instalado en este nuevo contenedor?
Explica la relación:
ubuntu:24.04
↓
servidor
↓
php-apache:v1
↓
nuevo contenedorParte 10 — Servir una página PHP
Crea una página:
index.phpque genere alguna salida mediante PHP.
Debes conseguir que Apache la sirva y poder acceder desde el navegador del anfitrión mediante un puerto publicado.
El resultado final debe ser accesible mediante una dirección similar a:
http://localhost:8080Aquí puede aparecer un problema interesante
Tener Apache instalado en una imagen no significa necesariamente que Apache vaya a ser automáticamente el proceso que se ejecute al arrancar un nuevo contenedor.
Si encuentras este problema:
- Identifícalo.
- Explica qué está ocurriendo.
- Busca una forma de arrancar Apache en primer plano.
No necesitamos todavía construir la solución perfecta.
Precisamente este problema nos ayudará a entender por qué necesitamos un Dockerfile en el siguiente tema.
Parte 11 — Inspeccionar y comprobar
Sobre el contenedor final utiliza:
docker ps
docker inspect
docker logs
docker statsPara cada comando explica qué pregunta te permite responder.
Por ejemplo:
docker psresponde a:
¿Está mi contenedor ejecutándose?
Busca preguntas equivalentes para los otros comandos.
Parte 12 — Ciclo de vida
Sobre el contenedor final realiza:
parar
comprobar estado
volver a arrancar
comprobar estadoDespués elimínalo.
Comprueba que:
- El contenedor ha desaparecido.
- La imagen
php-apache:v1sigue existiendo.
Pregunta
Para pensar en clase
¿Por qué eliminar el contenedor no elimina también la imagen?
Entrega de la práctica
Actividad
Qué debes entregar
Documenta el proceso completo.
Para cada paso relevante debes indicar:
- Qué quieres conseguir.
- Qué comando utilizas.
- Qué significa cada opción utilizada.
- Qué resultado esperas obtener.
- Cómo compruebas que ha funcionado.
- Qué has aprendido de ese paso.
Incluye las capturas que consideres necesarias para demostrar el funcionamiento.
No se evaluará únicamente que PHP y Apache funcionen.
El objetivo es que seas capaz de explicar el recorrido completo:
imagen base → contenedor → modificaciones → nueva imagen → nuevo contenedor → aplicación accesible
Y ahora... ¿Dockerfile?
Hemos conseguido crear nuestra propia imagen utilizando comandos y modificando manualmente un contenedor.
Funciona.
Pero tenemos un problema:
¿Dónde están documentados todos los pasos
necesarios para volver a construir la imagen?En el siguiente tema veremos cómo convertir algo parecido a:
crear Ubuntu
instalar Apache
instalar PHP
configurar
copiar aplicación
definir cómo arrancaren un fichero de texto reproducible:
DockerfilePasaremos de:
hacer cambios manualmente
↓
docker commita:
describir los cambios
↓
Dockerfile
↓
docker buildEse será nuestro siguiente paso.