docker --Dockerfile学习

docker --Dockerfile学习

dockerfile简介

一、什么是dockerfile

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本,包含用于组合镜像的命令的文本文档,简单来讲就是‘镜像文件到底是由什么东西一步步构成的’。dockerfile名字可以随便命名,但是不建议这么做,应该按照一定的规范来使用。

二、docker执行dockerfile的大致流程

1、docker从基础镜像中执行一个容器

2、执行一条指令对容器作出修改

3、执行类似docker commit命令,提交新的镜像

4、在基于刚提交的镜像运行一个新的容器

5、执行dockerfile的下一条指令,按照2-4步一次循环下去,直到所有的指令都执行完成

三、dockerfile的基本语法

1、每个保留子必须放在每一行的开头,可以大写也可以小写,但是建议大写,保留字后面必须跟参数,不可为空

2、指令按照顺序,从上往下一次执行

3、支持#注释

4、每条指令执行后都会创建一个新的镜像,并执行提交

四、dockfile的关键字(保留字指令)

1、FROM ,指定基础镜像
# scratch 一切镜像的祖先,类比python的元类type
2、MAINTAINER,维护镜像的作者信息(姓名+邮箱)
3、RUN,执行什么命令
4、EXPOSE,容器对外暴露的端口
5、WORKDIR 进入到容器后进入哪个目录
若不指定,则默认在根目录
6、ENV,配置环境变量
ENV MY_PATH /usr/mytest
# 这个环境变量可以在后续的RUN指令中使用,就如同在命令前面指定了环境变量前缀一样,也可以在其他指令中使用
#比如:
WORKDIR $MY_PATH
7、ADD,将宿主机目录下的文件拷贝到镜像中并解压和自动处理url
8、COPY, 将文件拷贝到镜像中
将从构建上下文目录中的<源路径>的文件/目录复制到新的一层的镜像内的<目的路径>位置
#eg:
COPY src dest # 将宿主机上的src 复制到 容器的dest
COPY ["src","dest"] # 不同写法
9、VOLUME, 配置数据卷,用于数据保存和持久化
10、CMD, 容器启动时执行的命令
#CMD指令的格式和RUN类似,也是两种格式
1)shell 格式:CMD<命令>
2)exec 格式:CMD["可执行文件","参数1","参数2"...]
#参数列表的格式
CMD["参数1","参数2",...],在指定了ENTRYPOINT后,用CMD指定具体的参数
#Dockerfile可以有多个CMD指令,但只有最后一个生效,并且可以被docker run 之后的参数替换
11、ENTRYPOINT,容器启动时候执行的命令
ENTRYPOINT和CMD一样,都是在指定容器启动的程序和参数
# ENTRYPOINT 中的命令不会被docker run 后跟的命令覆盖,而是追加
12、ONBUILD:触发器,当构建一个被继承的Dockerfile时运行的命令,父镜像在被子继承后,父镜像的ONBUILD被触发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29SL8b8d-1574242876310)(/Users/bobwang/Library/Application Support/typora-user-images/image-20191120142530271.png)]

13、.dockerignore 同git 的 .gitignore
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值