docker - 当我在 Dockerfile 中已经有 SHELL `/bin/bash -c` , ["bash"] 时,为什么我需要指定 "-c"?

标签 docker shell

<分区>

根据 here ,为了 docker-run 多个命令,我需要

docker run image_name /bin/bash -c "cd /path/to/somewhere; python a.py"

但是,我可以使用 SHELLDockerfile 中指定默认 shell操作说明。那么既然我已经可以指定一个容器的默认shell,为什么在运行docker容器时还需要​​用/bin/bash -c再次指定呢?不自动使用 SHELL 指令指定的 shell 背后的基本原理是什么?

最佳答案

Dockerfile 中的SHELL 指令用于Dockerfile RUN 说明(在图像创建期间完成)

docker run 是一个完全不同的命令(它创建一个容器并在其中运行一个命令)。您在镜像名称后指定的命令取决于镜像的构建方式。一些容器允许运行任意命令以及 /bin/bash(如果已安装)。

默认命令是在您的 docker 文件中使用 Dockerfile CMD 指令指定的。它默认为空。

您还可以指定将运行 CMDENTRYPOINT 指令。默认为 /bin/sh

关于docker - 当我在 Dockerfile 中已经有 SHELL `/bin/bash -c` , ["bash"] 时,为什么我需要指定 "-c"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68724341/

相关文章:

linux - 期待 bash 脚本中的命令

docker - GitLab 部署 token 在 EC2 Ubuntu 18.04 AMI 上失败,其他任何地方都没有

maven - docker 构建所需的敏感信息

objective-c - Shell 脚本调用错误 - 已删除的 Fabric 框架仍保留在项目中

regex - 如何批量将前置年份移动到文件名的末尾?

java - OOM 使用 CRON 但不使用 SHELL

mysql - 如何使用 sql-alchemy 从 Flask 应用程序连接到 mysql docker 容器

docker - Docker 主机与容器中的 Ulimits

reactjs - 如何使用React和Spring Boot连接docker-compose

macos - 从 sed 中提取多个捕获组到变量