Run, cmd y entrypoint en un dockerfile

Puede ser que las primeras veces que estamos creando un dockerfile, no se tengan claras las diferencias entre run, cmd y entrypoint. Es una duda corriente no saber cuándo usar cada uno.

RUN se usa básicamente para correr un comando, ya sea instalar un servicio, eliminar ficheros, crear directorios, … Se puede ejecutar las veces que lo necesitemos dentro del dockerfile.

RUN apt-get install nginx

CMD se utiliza para ejecutar un comando por defecto, cuando se crea el contenedor. Es bastante versátil, ya que podemos pasarle argumentos al correr el contenedor y podemos sobreescribirlo con facilidad.

CMD ["/usr/bin/supervisord"]

ENTRYPOINT también se utiliza para ejecutar un comando por defecto al correr un contenedor, pero no está pensado para que se le pasen argumentos al correr el contenedor. La idea es utilizar entrypoint como si fuera un ejecutable y ejecute un comando por defecto al iniciar el contendor. Por ejemplo tener contenedores con varias versiones de python.

ENTRYPOINT ["python"]

 

Artículos relacionados