dockerfile概念简介——镜像分层

目录

一、dockerfile概念

1.1 docker镜像的分层

二、Docker镜像的创建

2.1 基于dockerfile创建

2.1.1 dockerfile 结构(四部分)

2.1.2 dockerfile操作指令

三、镜像分层的原理

1.docker镜像分层(基于AUFS构建):

2.涉及技术

①bootfs (boot file system) 内核空间

②rootfs (root file system) 内核空间

总结

1、为什么docker的centos镜像只有200M多一点

2、LXC和容器是什么关系?

3、dockerfile镜像分层的原理

4、容器之间相互通信的方式

5、ADD和copy区别

6、cmd和entrypoint区别

7、AUFS 与overlay/ overlay2 (docker高版本)


一、dockerfile概念

  • dockerfile是**自定义镜像**的一套规则

  • dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于docker镜像中的每一层

1.1 docker镜像的分层

dockerfile的原理就是镜像分层。

  1. Dockerfile 中的**每个指令都会创建一个新的镜像层**(是一个临时的容器,执行完后将不再存在,再往后进行重新的创建与操作)
  2. 镜像层将被缓存和复用(后续的镜像层将基于前面的一层,每一层都会有下几层的缓存)
  3. 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了(后续操作必然更改前面的镜像层),那么对应的镜像层缓存就会失效(就会自动销毁)
  4. 某一层的镜像缓存失效之后,它之后的镜像层缓存就都会失效(第一层不成功,那么第二层也就再成功,相当于地基)
  5. 容器的修改并不会影响镜像,如果在某一层中添加一个文件,在下一层中删除它,镜像中依然会包含该文件

二、Docker镜像的创建

2.1 基于dockerfile创建

dockerfile是由**一组指令组**成的文件

dockerfile每行支持一条指令,每条指令可携带多个参数,一条指令可以用&&方式,去写多条指令。

dockerfile支持以“#”为开头的注释

2.1.1 dockerfile 结构(四部分)

  • 基础镜像信息(Linux发行版:centos ubantu suse debian alpine redhat)
  • 维护者信息(docker search可查看)
  • 镜像操作指令(tar yum make)
  • 容器启动时执行指令(**cmd["/root/run.sh"] 、entrypoint**都是系统启动时,第一个加载的程序/脚本/命令)

2.1.2 dockerfile操作指令

指令 含义
FROM [镜像] 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令例如centos:7。from有两层含义:①开启一个新的镜像②必须写的一行指令
MAINTAINER [名字] 说明新镜像的维护人信息(可写可不写)
RUN命令 每一条RUN后面跟一条命令,在所基于的镜像上执行命令,并提交到新的镜像中,RUN必须大写
CMD [“要运行的程序”,“参数1”、“参数2”] 指定启动容器时需要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能执行最后一条,“bin/bash”
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值