
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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)