为什么Docker中的入口点以运行jar的sh开头?

邓肯·奥利奥

为什么此入口点在运行jar时使用sh?ENTRYPOINT ["sh", "-c", "java -jar app.jar"]仅使用它有什么区别ENTRYPOINT ["java", "-jar", "app.jar"]

大卫·迷兹

ENTRYPOINT指令(连同CMDRUN)有两种形式。如果您使用JSON-array语法,则不会进行解释,单词拆分或任何其他处理。您传递的正是运行的内容。

# Three words
ENTRYPOINT ["java", "-jar", "app.jar"]
# You're already quoting things so spaces stay as part of each word
ENTRYPOINT ["java", "-jar", "my app.jar"]
# There is no interpolation so variable names do not get expanded --
# this looks for a file literally named `$JARFILE`
ENTRYPOINT ["java", "-jar", "$JARFILE"]
# There is only one command-line option with embedded spaces
ENTRYPOINT ["java", "-jar", "app.jar", "-a -b -c"]

在某些情况下(尤其是变量扩展),您确实需要运行shell。这就是sh -c进来,它需要一个单一的字,并处理它作为外壳命令。然后,它(大部分)会忽略所有其他选项,这意味着会CMD被有效忽略。

# This expands the environment variable `$JARFILE`, but if
# you pass additional options in `CMD`, they're lost
ENTRYPOINT ["sh", "-c", "java -jar $JARFILE"]

但是,您实际上不应使用此语法,因为Docker提供了自动为您插入纯字符串语法sh -c

# Exactly the same as above
ENTRYPOINT java -jar $JARFILE
# Three additional command-line options, since the shell does splitting
ENTRYPOINT java -jar app.jar -a -b -c

请记住,Docker将把组合成一个命令ENTRYPOINTCMD这可能会导致一个“容器为命令”模式,但你必须使用的JSON阵列形式ENTRYPOINT,并不得sh -c包装。

ENTRYPOINT ["java", "-jar", "app.jar"]
CMD ["-a", "-b", "-c"]

(还要记住,CMDdocker run命令中重写它要容易得多,并且有一种有用的模式,ENTRYPOINT用作包装脚本来进行首次设置,然后执行CMDas作为主要的容器过程。对于您所显示的简单命令,您可能会发现喜欢CMD。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker无法运行入口点

来自分类Dev

入口点:“ entrypoint.sh”-docker撰写

来自分类Dev

Docker-无法从带有入口点的导入映像中运行容器

来自分类Dev

在Visual Studio 2019中,带有docker run入口点的tail命令是什么?

来自分类Dev

Docker运行-具有多个参数的入口点

来自分类Dev

Docker 入口点未在 jupyterhub 上以 root 身份运行

来自分类Dev

默认的Docker入口点

来自分类Dev

为什么setuptools不创建我的入口点?

来自分类Dev

/ bin / sh:设置docker-compose入口点时没有此类文件或目录

来自分类Dev

C# 中 URL Scheme 的入口点是什么?

来自分类Dev

为什么Docker入口点脚本无法启动?

来自分类Dev

docker nginx部署入口点

来自分类Dev

Docker在入口点后退出

来自分类Dev

Docker,入口点异常行为

来自分类Dev

覆盖的docker入口点的参数

来自分类Dev

Docker运行中的Dockerfile入口点脚本参数

来自分类Dev

为什么我无法在 shell 脚本中运行 docker 命令

来自分类Dev

从入口点动态选择在主机上运行 Docker 的用户 GUI 和 UID

来自分类Dev

GWTP 中的多个入口点

来自分类Dev

为什么Docker“在$ PATH中找不到可执行文件`/ bin / sh`”?

来自分类Dev

为什么在编译DLL项目时收到错误LNK1561“必须定义入口点”?

来自分类Dev

为什么在使用自定义入口点时webpack无法找到反应?

来自分类Dev

为什么入口点地址不从0x400000开始

来自分类Dev

为什么在ARM二进制文件上显示readelf奇数入口点地址?

来自分类Dev

为什么收到“无法在DLL中找到名为'SquareRoot'的入口点”消息?

来自分类Dev

为什么在编译DLL项目时收到错误LNK1561“必须定义入口点”?

来自分类Dev

如何在文件树中创建带有入口点的jar文件?

来自分类Dev

docker:不覆盖基本映像入口点

来自分类Dev

Docker入口点不会提示我输入

Related 相关文章

  1. 1

    Docker无法运行入口点

  2. 2

    入口点:“ entrypoint.sh”-docker撰写

  3. 3

    Docker-无法从带有入口点的导入映像中运行容器

  4. 4

    在Visual Studio 2019中,带有docker run入口点的tail命令是什么?

  5. 5

    Docker运行-具有多个参数的入口点

  6. 6

    Docker 入口点未在 jupyterhub 上以 root 身份运行

  7. 7

    默认的Docker入口点

  8. 8

    为什么setuptools不创建我的入口点?

  9. 9

    / bin / sh:设置docker-compose入口点时没有此类文件或目录

  10. 10

    C# 中 URL Scheme 的入口点是什么?

  11. 11

    为什么Docker入口点脚本无法启动?

  12. 12

    docker nginx部署入口点

  13. 13

    Docker在入口点后退出

  14. 14

    Docker,入口点异常行为

  15. 15

    覆盖的docker入口点的参数

  16. 16

    Docker运行中的Dockerfile入口点脚本参数

  17. 17

    为什么我无法在 shell 脚本中运行 docker 命令

  18. 18

    从入口点动态选择在主机上运行 Docker 的用户 GUI 和 UID

  19. 19

    GWTP 中的多个入口点

  20. 20

    为什么Docker“在$ PATH中找不到可执行文件`/ bin / sh`”?

  21. 21

    为什么在编译DLL项目时收到错误LNK1561“必须定义入口点”?

  22. 22

    为什么在使用自定义入口点时webpack无法找到反应?

  23. 23

    为什么入口点地址不从0x400000开始

  24. 24

    为什么在ARM二进制文件上显示readelf奇数入口点地址?

  25. 25

    为什么收到“无法在DLL中找到名为'SquareRoot'的入口点”消息?

  26. 26

    为什么在编译DLL项目时收到错误LNK1561“必须定义入口点”?

  27. 27

    如何在文件树中创建带有入口点的jar文件?

  28. 28

    docker:不覆盖基本映像入口点

  29. 29

    Docker入口点不会提示我输入

热门标签

归档