Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

2.7K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda