En esta lección aprenderás instrucción ENTRYPOINT Dockerfile, la instrucción que fija el ejecutable principal de una imagen y permite construir contenedores que se comportan como comandos.
ENTRYPOINT se parece a CMD porque afecta al arranque del contenedor, pero no cumple exactamente la misma función. CMD suele aportar valores por defecto; ENTRYPOINT suele fijar el programa principal.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Qué hace la instrucción ENTRYPOINT Dockerfile
Problema: algunas imágenes deben comportarse como una herramienta concreta. Quieres que al ejecutar el contenedor siempre arranque ese ejecutable, aunque el usuario cambie argumentos.
Qué aporta Docker: ENTRYPOINT define el ejecutable principal. Si lo combinas con CMD, CMD puede actuar como lista de argumentos por defecto.
| Patrón | Cuándo usarlo |
|---|---|
| ENTRYPOINT solo | Cuando quieres fijar siempre el ejecutable. |
| ENTRYPOINT + CMD | Cuando quieres ejecutable fijo con argumentos por defecto reemplazables. |
| CMD solo | Cuando quieres un comando por defecto fácil de sustituir. |
Forma exec y forma shell
ENTRYPOINT puede escribirse como una lista JSON (forma exec) o como una orden de shell. La forma exec ejecuta el programa directamente y deja que reciba las señales de Docker como proceso principal. La forma shell pasa por /bin/sh -c; además de cambiar la interpretación de la orden, puede dejar el shell como PID 1 y dificultar el cierre ordenado.
| Forma | Cómo se comporta | Uso recomendado |
|---|---|---|
| ENTRYPOINT [«programa», «argumento»] | Ejecuta directamente el programa; CMD puede aportar argumentos por defecto. | Preferible para la mayoría de servicios y herramientas. |
| ENTRYPOINT programa argumentos | Se interpreta mediante el shell y no combina los argumentos de CMD ni los que se pasan al ejecutar el contenedor. | Solo cuando necesitas expresamente procesamiento del shell; si un script inicia el proceso, usa exec. |
Ejemplo práctico
FROM alpine:3.20
ENTRYPOINT ["ping"]
CMD ["-c", "4", "1.1.1.1"]docker build -t entrypoint-demo:1.0 .
docker run --rm entrypoint-demo:1.0
docker run --rm entrypoint-demo:1.0 -c 2 8.8.8.8El primer docker run usa los argumentos por defecto de CMD. El segundo mantiene ping como ENTRYPOINT, pero reemplaza los argumentos por otros valores.
Cómo se combinan ENTRYPOINT y CMD
Con ENTRYPOINT en forma exec, Docker lo trata como el ejecutable fijo. CMD aporta sus argumentos predeterminados, y los argumentos añadidos después del nombre de la imagen reemplazan esos valores. Así la imagen mantiene su propósito sin impedir que quien la ejecuta cambie las opciones.
| Configuración | Comando de ejecución | Qué ocurre |
|---|---|---|
| ENTRYPOINT [«ping»] y CMD [«-c», «4», «1.1.1.1»] | docker run imagen | Usa ping con los argumentos predeterminados de CMD. |
| La misma configuración | docker run imagen -c 2 8.8.8.8 | Conserva ping y reemplaza los argumentos de CMD. |
| La misma imagen | docker run –entrypoint sh imagen | Sobrescribe ENTRYPOINT para una ejecución de diagnóstico. |
Errores comunes
- Confundir ENTRYPOINT con CMD: CMD se sustituye fácilmente; ENTRYPOINT fija el ejecutable principal.
- Usar shell form sin necesidad: puede dificultar el manejo correcto de señales.
- No permitir argumentos: una imagen rígida puede ser incómoda de usar.
- Meter lógica compleja en un script sin exec: el proceso puede no recibir señales correctamente.
Advertencia: si usas un script como entrypoint, termina lanzando el proceso principal con exec para que reciba señales de parada correctamente.
Lecciones relacionadas del curso Docker
- Instrucción CMD Dockerfile
- Diferencia entre CMD y ENTRYPOINT
- Instrucción RUN Dockerfile
- Instrucción USER Dockerfile
- Cómo ejecutar comandos dentro de un contenedor
Documentación oficial y recursos
- Referencia oficial de ENTRYPOINT
- Referencia oficial de CMD
- Recomendaciones oficiales sobre procesos en contenedores
La instrucción ENTRYPOINT Dockerfile queda bien usada cuando fija claramente el ejecutable principal y deja que CMD aporte argumentos por defecto cuando tenga sentido.
Después de esta lección, la comparación entre CMD y ENTRYPOINT te ayudará a decidir cuál conviene en cada imagen.

