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

【VMCloud云平台】拥抱Docker(六)关于DockerFile(2)

时间:2016-07-06 18:29:54      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:target   style   display   blank   云平台   

上一章,我们讲了DockerFile的最基本构成,讲了两种Dockerfile的构建Image方式,这一篇,我们将来介绍DockerFile里面所带的N多参数。

以下就是今天所要说DockerFile涉及的环境:

技术分享

DockerFile简易示意图:

技术分享

1、 RUN参数:我们在上一章创建的DockerFile里加入参数Run yum install –y vim*:

技术分享

2、 尝试构建,你就会发现Dockerfile的RUN参数生效了:

技术分享

技术分享

3、 所以,RUN的作用就是可以帮你运行一些需要预运行的命令,但是最好不要在RUN里面做类似“yum update”、“apt-get update”之类的操作,这并不符合Dockerfile的最佳实践。

4、 CMD参数:介绍到RUN就不得不介绍下CMD了,CMD命令与RUN的区别在于,CMD在一个DockerFile只能用一次,如果在DockerFile存在多个CMD的话,默认只运行最后一条,比如你可以在最后一行写上一句“Enjoy your docker images”,CMD的调用比较特殊,是在通过以你的images构建完成容器后自动触发,比如docker run ImagesName:

技术分享

5、 EXPOES参数:这个参数用来指定Container需要暴露给其他Container的端口,相当于构建内部网络,与-p的区别在于,expoes是对内提供端口方法(Container之间,比如ngx访问mysql),-p参数是映射端口相当于NAT,比如:

技术分享

6、 构建完成:

技术分享

7、 接着,我们通过这个images创建两个容器,就明白EXPOSE参数的作用了,可以看到下图有出现“port 22”:

技术分享

8、 但是在端口映射表里是看不到的,证明这是内部映射端口:

技术分享

9、 进入其中一个容器,使用nmap测试另外一个容器的端口是否能够相通:

技术分享

10、 ENTRYPOINT参数:就此可以看出EXPOSE的作用,眼尖的人儿可能看到我使用了ENTRYPOINT这个参数,ENTRYPOINT这个参数的属性跟CMD有点儿像,同样是多个参数存在的时候只执行最后一条,这个例子中,我使用了该参数将SSH服务作为一个后台服务进行运行:

技术分享


 

技术分享

本文出自 “VMCloud” 博客,谢绝转载!

【VMCloud云平台】拥抱Docker(六)关于DockerFile(2)

标签:target   style   display   blank   云平台   

原文地址:http://vmcloud.blog.51cto.com/3499815/1811582

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