Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.7K
Vistas
Diferencias entre las instrucciones de Dockerfile en Shell y Exec Form

¿Cuál es la diferencia entre el formulario shell y exec para

CMD :

 CMD python my_script.py arg

contra

 CMD ["python", "my_script.py", "arg"]

ENTRYPOINT :

 ENTRYPOINT ./bin/main

contra

 ENTRYPOINT ["./bin/main"]

y RUN :

 RUN npm start

contra

 RUN ["npm", "start"]

¿Instrucciones Dockerfile ?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay dos diferencias entre el formulario shell y el formulario exec. De acuerdo con la documentación , el formulario exec es el formulario preferido. Estas son las dos diferencias:

El formulario exec se analiza como una matriz JSON, lo que significa que debe usar comillas dobles (") alrededor de las palabras, no comillas simples (').

A diferencia del formulario de shell, el formulario exec no invoca un shell de comandos. Esto significa que el procesamiento de shell normal no ocurre. Por ejemplo, CMD [ "echo", "$HOME" ] no realizará la sustitución de variables en $HOME. Si desea un procesamiento de shell, utilice el formulario de shell o ejecute un shell directamente, por ejemplo: CMD [ "sh", "-c", "echo $HOME"]. Cuando se usa el formulario exec y se ejecuta un shell directamente, como en el caso del formulario de shell, es el shell el que realiza la expansión de la variable de entorno, no Docker.

Algunas sutilezas adicionales aquí son:

El formulario exec hace posible evitar la manipulación de cadenas de shell y EJECUTAR comandos utilizando una imagen base que no contiene el ejecutable de shell especificado.

En el formulario de shell, puede usar una \ (barra invertida) para continuar con una sola instrucción RUN en la siguiente línea.

También hay una tercera forma para CMD :

CMD ["param1","param2"] (como parámetros predeterminados para ENTRYPOINT)

Además, se requiere el formulario exec para CMD si lo está utilizando como parámetros/argumentos para ENTRYPOINT que están destinados a sobrescribirse.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda