设为首页 收藏本站
查看: 1138|回复: 0

[经验分享] 跟我一起学docker(八)

[复制链接]

尚未签到

发表于 2019-2-21 10:18:31 | 显示全部楼层 |阅读模式
1.利用Dockerfile创建镜像
什么是Dockerfile?
定义:Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义镜像。
基本结构:
Dockerfile由一行行的命令语句组成。并且支持以#开头的注释行。一般Dockerfile分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时的指令。
Dockerfile示例:
#This is a Dockerfile
#Author:liming
#第一行必须指定基础镜像
FROM ubuntu
#维护者信息
MAINTAINER
#镜像的操作指令
RUN apt-get update
RUN apt-getinstall -y nginx
RUN echo “\ndaemonoff:” >> /etc/nginx/nginx.conf
#容器启动时的指令
CMD /usr/sbin/nginx
操作一下:
首先创建目录testDockerfile并进入
DSC0000.jpg

vi Dockerfile
DSC0001.jpg

创建命令:
docker build –t =“”.
注意:执行此命令要和Dockerfile在同级目录,文件名称必须为Dockerfile。命令后面的”.”表示在当前目录下执行。


2.Dockerfile指令集
1 FROM
DSC0002.jpg

第一条指令必须为FROM指令,用于指定基础镜像。
2 MAINTAINER
格式为 MAINTAINER ,指定维护者信息。
3 RUN
格式为 RUN ,会在shell终端运行命令。
4 EXPOSE
格式为 EXPOSE [ ...],容器需要暴露的端口号。镜像启动可以通过 –P 或 -p 进行端口映射的绑定。
5 ENV
格式为 ENV 。
指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量。
6 ADD
格式为 ADD 。
该命令将复制指定的到容器中的。其中可以是Dockerfile所在目录的一个相对路径;也可以是url,还可以是tar文件(自动解压)。
7 VOLUME
格式为 VOLUME [path]。
创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据。
8 USER
格式为 USER 。
指定运行容器时的用户名,后续的RUN也会指定该用户。
9 WORKDIR
格式为 WORKDIR 。
指定工作空间,运行完WORKDIR后,后续执行的RUN、CMD、ENTRYPOINT都会在此目录下执行。
10 COPY
格式为 COPY 。
复制本地主机的到容器中的,目标路径不存在时,会自动创建。
当使用本地目录为源目录时,推荐使用COPY。
11 CMD
推荐格式为 CMD [“executable”,”param1”,”param2”] 。
作为ENTRYPOINT的默认参数为 CMD[”param1”,”param2”]。
指定容器的启动命令,每个Dockerfile只能有一条CMD命令,如果指定多条,只有最后一条会执行。
用户启动容器时指定运行命令,会覆盖掉Dockerfile中的CMD命令。
12 ENTRYPOINT
格式为 ENTRYPOINT [“executable”,”param1”,”param2”]。
配置容器启动后的命令,可被docker run提供的--entrypoint参数覆盖。
每个Dockerfile只能有一条ENTRYPOINT命令,如果指定多条,只有最后一条会执行。
DSC0003.jpg

DSC0004.jpg

DSC0005.jpg

3.容器内安装工具的方法




4.Dockerfile最佳实践
1 错误定位
每个Dockerfile的指令可以生成新的一层镜像,如果通过Dockerfile创建镜像出错,可以根据出错所在步骤的上一层启动容器,然后手工执行出错层的命令,以达到调试目的。
2 好的使用习惯
http://dockone.io/article/131
http://dockone.io/article/132




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675216-1-1.html 上篇帖子: docker专项 下篇帖子: 跟我一起学docker(九)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表