shell和exec表单的区别是什么?
CMD
:
CMD python my_script.py arg
vs。
CMD ["python", "my_script.py", "arg"]
入口点
:
ENTRYPOINT ./bin/main
vs。
ENTRYPOINT ["./bin/main"]
和RUN
:
RUN npm start
vs。
RUN ["npm", "start"]
Dockerfile
指令?
shell表单和exec表单之间有两个区别。根据文档,exec表格是首选表格。这是两个区别:
exec表单被解析为JSON数组,这意味着您必须在单词周围使用双引号(“),而不是单引号(”)。
与shell表单不同,exec表单不调用命令shell。这意味着正常的shell处理不会发生。例如,CMD[“echo”,“$HOME”]不会对$HOME进行变量替换。如果需要shell处理,则可以使用shell表单或直接执行shell,例如:CMD[“sh”、“-c”、“echo$HOME”]。当使用exec表单并直接执行shell时,就像shell表单一样,执行环境变量扩展的是shell,而不是docker。
这里还有一些微妙之处:
exec表单可以避免shell字符串的mung,并可以使用不包含指定shell可执行文件的基本映像运行命令。
在shell表单中,您可以使用\(反斜杠)将单个RUN指令延续到下一行。
还有第三种形式的CMD
:
CMD[“param1”、“param2”](作为入口点的默认参数)
此外,如果要将exec表单用作要覆盖的ENTRYPOINT
的参数/参数,则CMD
需要exec表单。
命令的shell形式和exec形式是什么? 我浏览了几个文档,以便对shell窗体和exec窗体有一个清晰的了解。但在我看来一切都很混乱。有谁能帮忙弄清楚这两种形式有什么区别吗? ps:虽然我在查看docker文件指令()时遇到了这些术语,但我想知道它们之间的一般区别,而不是在docker上下文中。
问题内容: docker RUN和CMD语句的shell形式和exec形式之间有什么区别? 例如: vs: eg2 : vs: 问题答案: Shell窗体和exec窗体之间有两个区别。根据文档,exec形式是首选形式。这是两个区别: exec形式被解析为JSON数组,这意味着您必须在单词而非单引号(’)周围使用双引号(“)。 与shell表单不同,exec表单不会调用命令shell。这意味着正常的
我在docker文档上读到了如何使用ONBUILD指令,但一点也不清楚。 有人能给我解释一下吗?
问题内容: 以下是我的“ Dockerfile”的内容 在此文件中,我期望“ VOLUME。/ usr / src / app”指令将主机上当前工作目录的内容安装在要安装在容器的/ usr / src / app文件夹中的主机中。 请让我知道这是正确的方法吗? 问题答案: 官方Docker教程说: 数据卷是一个或多个容器中的一个特别指定的目录,绕过联合文件系统。数据量为持久性数据或共享数据提供了几
下面是我的“DockerFile”的内容
问题内容: 我希望能够将Java应用程序中以字符串表示的许多连续命令发送到SSH服务器以执行。我应该使用: -要么- 问题答案: 使用shell通道启动外壳(在Unix上为sh或bash或类似的东西,在Windows上通常为cmd.exe)并创建控制台(如果在本地运行它们,则在屏幕上看到的内容)。您有一个提示,您可以将其解析或用于检测命令是否完成。 使用命令通道,将为每个命令启动一个shell实例