栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Dockerfile中的CMD和ENTRYPOINT有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dockerfile中的CMD和ENTRYPOINT有什么区别?

Docker有一个默认入口点,

/bin/sh -c
但没有默认命令。

当您像这样运行docker时:

docker run -i -t ubuntu bash
入口点是默认值
/bin/sh-c
,映像是
ubuntu
,命令是
bash

该命令通过入口点运行。即,实际执行的是

/bin/sh -c bash
。这使Docker可以
RUN
依靠Shell的解析器快速实现。

后来,人们要求能够对此进行自定义,因此

ENTRYPOINT
--entrypoint
进行了介绍。

ubuntu
上面示例中的所有内容均为命令,并传递给入口点。使用
CMD
说明时,就好像您在做一样
docker run -i -t ubuntu<cmd>
<cmd>
将是入口点的参数。

如果您改为输入此命令,您还将得到相同的结果

docker run -i -t ubuntu
。由于ubuntu
Dockerfile
指定了默认CMD
,因此您仍将在容器中启动bash shell :
CMD ["bash"]

当所有内容都传递到入口点时,您的图像会表现出很好的行为。@Jiri示例很好,它显示了如何将图像用作“二进制”。当

["/bin/cat"]
用作入口点然后执行操作时
dockerrun img /etc/passwd
,您会得到它,它
/etc/passwd
是命令并传递给入口点,因此最终结果的执行很简单
/bin/cat/etc/passwd

另一个示例是将任何cli作为入口点。例如,如果您有一个redis映像,而不是运行

docker run redisimg redis -Hsomething -u toto get key
,则可以简单地拥有
ENTRYPOINT ["redis", "-H", "something","-u", "toto"]
,然后像这样运行以获得相同的结果:
docker run redisimg get key



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号