docker下entrypoint和cmd的区别是什么?


本文摘自PHP中文网,作者coldplay.xixi,侵删。

docker下entrypoint和cmd的区别是:1、CMD指令运行一个可执行的文件并提供参数,可以为ENTRYPOINT指定参数;2、ENTRYPOINT指令本身也可以包含参数,变动的参数不会被覆盖。

docker下entrypoint和cmd的区别是:

1、CMD指令:

CMD在容器运行的时候提供一些命令及参数,用法如下:

  • CMD ["executable","param1","param2"] (exec form, this is the preferred form)

  • CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

  • CMD command param1 param2 (shell form)

第一种用法:运行一个可执行的文件并提供参数。

第二种用法:为ENTRYPOINT指定参数。

第三种用法(shell form):是以”/bin/sh -c”的方法执行的命令。

如你指定:

1

CMD [“/bin/echo”, “this is a echo test ”]

build后运行(假设镜像名为ec):

1

docker run ec

就会输出:

1

this is a echo test

是不是感觉很像开机启动项,你可以暂时这样理解。

注意点:

docker run命令如果指定了参数会把CMD里的参数覆盖: (这里说明一下,如:docker run -it ubuntu /bin/bash 命令的参数是指/bin/bash 而非 -it ,-it只是docker 的参数,而不是容器的参数,以下所说参数均如此。)

同样是上面的ec镜像启动:

1

docker run ec /bin/bash

就不会输出:

1

this is a echo test

因为CMD命令被”/bin/bash”覆盖了。

2、ENTRYPOINT指令 

字面意思是进入点,而它的功能也恰如其意。它可以让你的容器功能表现得像一个可执行程序一样。

容器功能表现得像一个可执行程序一样,这是什么意思呢?

直接给个例子好说话:

例子一:

使用下面的ENTRYPOINT构造镜像:

1

ENTRYPOINT ["/bin/echo"]

那么docker build出来的镜像以后的容器功能就像一个/bin/echo程序:

比如我build出来的镜像名称叫imageecho,那么我可以这样用它:

阅读剩余部分

相关阅读 >>

Docker怎么修改已创建的容器端口

Docker如何删除镜像文件

怎么把jar包变成Docker容器

Docker如何修改镜像名称

Docker 可以用在哪些方面?

Docker怎么配置支持ipv4

Docker怎么以root用户登录

怎么查看Docker镜像中的文件

主机上Docker之间不通怎么办

Docker服务启动报错怎么办

更多相关阅读请进入《Docker》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...