La construcción de una imagen en Docker implica el uso de un script que especifique las instrucciones relacionadas con estas labores. Este script cuenta con dos tipos diferentes de instrucciones que contribuyen a realizar la definición de la labor ejecutada en el contenedor. Estas instrucciones se denominan ENTRYPOINT y CMD.
Aunque ambas opciones se caracterizan por especificar los programas que se ejecutarán una vez el contenedor se inicia, las instrucciones de ENTRYPOINT y CMD cuentan con una serie de elementos diferenciadores que los distinguen entre sí. Esto implica que cada opción tiene sus propias capacidad y resultan adecuadas para realizar sus labores en diferentes casos de uso, entornos y aplicaciones.
Por un lado, Docker CMD se encarga del proceso de definición del ejecutable predeterminado de la imagen de Docker, que puede ejecutarse como una base del contenedor sin que se tenga que agregar argumentos de línea de comandos. Por otra parte, la opción de ENTRYPOINT en los Dockerfile se usa con el objetivo de establecer los ejecutables que se ejecutarán siempre que se inicie el contenedor. ENTRYPOINT no puede ignorarse ni anularse, incluso cuando el container se ejecuta con los argumentos de la línea de comandos indicados para esa labor.
Diferencias entre ENTRYPOINT y CMD
Dentro de las diferencias de las opciones docker ENTRYPOINT y CMD, se encuentra que las instrucciones de ENTRYPOINT se agregan en formato de parámetros de la línea de comandos, al tratarlos como si fueran argumentos de estos comandos, mientras que a las opciones de CMD el daemon de docker no las tiene en cuenta en las ocasiones donde existen parámetros predeterminados relacionados con el comando de docker run
.
Esto quiere decir que CMD cumple la función de definir los comandos y parámetros preestablecidos para un determinado contenedor de la plataforma, por lo que es la instrucción más útil si el usuario requiere un comando por defecto que contenga la propiedad de ser anulado de una manera muy sencilla. Cabe resalta que, cuando un Dockerfile cuenta con más de una instrucción de docker CMD, solo puede aplicar el script del último de estos.
Por otra parte, la opción de docker ENTRYPOINT resulta ideal para llevar a cabo la definición de un container que incluya un ejecutable específico. Se debe tener en cuenta que no es posible anular un ENTRYPOINT cuando se inician los contenedores, a menos que el usuario agregue la llamada
--entrypoint
flag.
🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴
Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semanaAunque las opciones de docker ENTRYPOINT y CMD docker se utilizan para configurar la ejecución de un contenedor en Docker y ambas instrucciones necesitan especificar cuáles serán los comandos y parámetros que se usarán para cumplir sus labores, las instrucciones de ENTRYPOINT no pueden anularse agregando un parámetro del command line del comando docker run
, por lo que, si el usuario utiliza esta opción, significa que el contenedor con el que está trabajando tiene un diseño y configuración específicamente desarrollado para el cumplimiento de tal función.
Combinación de ENTRYPOINY y CMD
A pesar de las múltiples diferencias entre las opciones de ENTRYPOINT docker y CMD docker, estas no son mutuamente excluyentes, por lo que se puede contar con ambas dentro de un Dockerfile. Además, el usuario tiene la posibilidad de combinar las instrucciones de ENTRYPOINT y CMD en los casos en los que requiera un container con un ejecutable (definido con la instrucción de ENTRYPOINT) y un parámetro predeterminado (especificado por la opción de docker CMD) que pueda modificarse con facilidad. Un ejemplo de esto puede ser el establecimiento de las variables específicas del entorno cuando el sistema contiene una aplicación.
Cuando el usuario lleve a cabo la combinación de las instrucciones ENTRYPOINT docker y CMD, es importante que mantenga estas opciones en el formato exec
, para garantizar su adecuado funcionamiento dentro del sistema.
¿Cuál es el siguiente paso?
En este artículo has podido conocer qué son las instrucciones ENTRYPOINT docker y CMD docker, así como sus características y diferencias más importantes dentro de la plataforma de contenedores Docker. Ahora, ha llegado el momento de dar el siguiente paso y, para ello, te aconsejamos seguir con tu proceso de formación en relación a esta y otras herramientas con el apoyo de nuestro DevOps & Cloud Computing Full Stack Bootcamp. Gracias a este bootcamp, en solo 6 meses adquirirás la capacidad de dominar todo lo imprescindible para convertirte en un profeional dentro del sector IT y, así, destacar frente a tus competidores. ¡Inscríbete ya y sigue aprendiendo!