Instrucción CMD Dockerfile

instruccion-cmd-docker
instruccion-cmd-docker

En esta lección aprenderás instrucción CMD Dockerfile, la instrucción que define qué comando se ejecuta por defecto cuando arrancas un contenedor desde una imagen.

CMD no se ejecuta durante el build. Para instalar paquetes o preparar archivos se usa RUN. CMD describe el proceso por defecto en tiempo de ejecución.

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis

🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis

Qué hace la instrucción CMD Dockerfile

Problema: una imagen necesita declarar qué proceso debe arrancar si el usuario no indica otro comando en docker run.

Qué aporta Docker: CMD define ese comando por defecto. Si al ejecutar el contenedor pasas otro comando al final, Docker puede sustituir el CMD.

FormaRecomendación
Exec formPreferible: CMD [«nginx», «-g», «daemon off;»]
Shell formÚsala solo si necesitas interpretación del shell.
Solo un CMD efectivoSi hay varios CMD, Docker usa el último.

Ejemplo práctico

FROM nginx:stable-alpine
COPY ./public /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t cmd-demo:1.0 .
docker run --rm cmd-demo:1.0
docker run --rm cmd-demo:1.0 nginx -v

El primer docker run usa el CMD definido en la imagen. El segundo pasa otro comando al final y, por tanto, sustituye el CMD por defecto.

Errores comunes

  • Confundir CMD con RUN: RUN construye la imagen; CMD define qué se ejecuta al arrancar el contenedor.
  • Poner varios CMD esperando que se ejecuten todos: solo cuenta el último.
  • Usar shell form sin necesidad: puede complicar señales y argumentos.
  • Meter tareas de inicialización frágiles: si necesitas lógica compleja, evalúa ENTRYPOINT o un script bien controlado.

Advertencia: si el proceso principal no gestiona bien señales, el contenedor puede tardar en detenerse o cerrarse mal. Por eso suele recomendarse exec form cuando sea posible.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

La instrucción CMD Dockerfile queda bien usada cuando define un proceso por defecto claro, sustituible y alineado con la función principal de la imagen.

Si necesitas combinar comando fijo y argumentos variables, continúa con ENTRYPOINT y después con la diferencia entre CMD y ENTRYPOINT.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *