docker - Dockerfile 中是否需要提及 CMD 或 ENTRYPOINT?
问题描述
我已阅读有关 CMD 和 ENTRYPOINT 的文档
https://docs.docker.com/engine/reference/builder/#entrypoint
在这里,他们在表中提到“不允许使用 NO CMD 和 NO ENTYRPOINT”,但是我创建了一个没有 CMD 和 ENTRYPOINT 的 Dockerfile,并且成功构建了映像。从这里下载高山焦油Alpine Tar
Dockerfile
from scratch
ADD alpine-minirootfs-3.11.2-x86_64.tar.gz /
COPY . /
构建图像:
docker build -t test:1 .
Sending build context to Docker daemon 2.724MB
Step 1/3 : from scratch
-----
Successfully tagged test:1
docker run -ti test:1 /bin/sh
/ #
有效!!那么为什么在文档中提到 CMD 或 ENTRYPOINT 是必要的?
解决方案
docker run
在命令行供应(或覆盖)的末尾指定一个命令CMD
;同样,docker run --entrypoint
选项提供(或覆盖)ENTRYPOINT
。在您的示例中,您给出了一个命令/bin/sh
,因此容器可以做一些事情;如果你把它关掉,你会得到一个错误。
作为风格问题,您的 Dockerfile 几乎总是应该声明 a CMD
,除非您正在扩展已经自动运行应用程序的基本映像(nginx
, tomcat
)。这将让您docker run
生成图像并启动嵌入其中的应用程序,而无需记住更具体的命令行调用。
推荐阅读
- python - Python中一组点的质心
- c++ - 如何有效地在 std::vector 中插入一对?
- javascript - 每次注册时,如何将用户和其他详细信息添加到数据库中的用户节点?
- javascript - 问题定位 HTML div 下面的 SVG 附加到 HTML 的“正文”
- g++ - 百胜安装问题
- react-native-ios - 用于 iOS fbsdk 的 React Native 登录按钮
- jenkins - jenkins 管道在 sh 后退出
- python - Selenium chrome webdriver无法在python中定位元素
- visual-studio-code - 即使打开不同文件夹中的文件,VSCode 是否可以始终打开默认文件夹(用于 Ctrl + P 搜索)?
- react-native - FlatList 不会向下滚动到最后