码迷,mamicode.com
首页 > 其他好文 > 详细

10.Docker之CMD指令

时间:2018-04-30 19:43:25      阅读:662      评论:0      收藏:0      [点我收藏+]

标签:bubuko   字符   伪终端   shell   除了   编写   技术   info   centos   

通过docker run 创建并启动一个容器时,命令的最后可以指定容器启动后在容器内立即要执行的指令,如:docker run -i -t image /bin/bash,表示容器启动时立即在容器内打开一个shell伪终端。

除了这种方式我们完全可以在dockerfile文件中通过CMD指令指定容器启动时要执行的命令。

首先,编写一个简单的dockfile,以centos为基础镜像:

#Base image
FROM centos

#MAINTAINER,this dockerfile creater
MAINTAINER loose@docker.com

#使用CMD指令
CMD ["/bin/bash"]

其次,我们根据该dockerfile构建一个镜像:

技术分享图片

接着,我们查看构建的镜像:

技术分享图片

最后,来体验下CMD的作用:

1.上面dockerfile文件中最后一行CMD指令的参数是指定容器启动时要执行的命令,这里设置为bin/bash命令,当我们使用docker run -i -t 镜像 /bin/bash命令交互,是在新容器内指定一个伪终端或终端,最后会帮我们将这个新容器生成出来;这时由于我们在CMD指定了/bin/bash,所以当我们本该执行docker run -i -t 镜像 /bin/bash命令来进行交互时,可以省略 /bin/bash,即我们只需要键入docker run -i -t 镜像即可:

技术分享图片

再来查看帮我们生成的容器是否跟上方箭头指向的容器ID一致:

技术分享图片

通过对比,是一致的!

2.就算dockerfile中有CMD指令,我们仍然可以在docker run命令中带上容器启动时执行的命令,这会覆盖dockerfile中的CMD指令指定的命令。

例如:docker run -i -t images /bin/ps(这里我们指定查看进程命令,就是为了无法打开交互式shell界面,以此来测试dockerfile内的CMD命令是否被覆盖)

技术分享图片

3.在dockerfile中,可以有多条CMD命令,但多条CMD命令并不会都有效,以最后一条CMD命令为主

4.CMD命令的参数格式,一般建议编写为字符串数组的方式,如:

CMD ["echo","dockerfile.cmd"]

技术分享图片

 

10.Docker之CMD指令

标签:bubuko   字符   伪终端   shell   除了   编写   技术   info   centos   

原文地址:https://www.cnblogs.com/Json1208/p/8974157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!