在Dockerfiles中有两个看起来与我类似的命令:CMD和ENTRYPOINT.但是我猜它们之间存在着一种(微妙的?)差异 - 否则对于同样的事情来说两个命令就没有任何意义.
文档说明了 CMD
CMD的主要目的是为执行容器提供默认值.
并为ENTRYPOINT:
ENTRYPOINT可帮助您配置可作为可执行文件运行的容器.
那么,这两个命令之间的区别是什么?
我注意到docker的许多entrypoint.sh脚本都是这样的:
#!/bin/bash
set -e
... code ...
exec "$@"
Run Code Online (Sandbox Code Playgroud)
什么是set -e和exec "$@"为什么?