理解docker的分层镜像实现 base 镜像共享(DockerFile)

本文深入探讨了Docker的分层镜像机制,特别是base镜像的角色和如何实现资源的高效共享。通过aufs等技术,Docker能够创建只读镜像层和容器层,利用写时复制策略节省存储空间,加速容器启动。容器的kernel使用宿主机的,而base镜像通常是Linux发行版的基础,如Ubuntu、CentOS。
摘要由CSDN通过智能技术生成

      Docker 镜像要采用这种分层结构最大的一个好处就是 - 共享资源

      比如:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

目录

一、关于base镜像

二、镜像、容器和存储驱动的关系

三、最为典型的镜像的分层技术——aufs

 四、总结


一、关于base镜像

base 镜像有两层含义:

  • 不依赖其他镜像,从 scratch 构建。(scratch 是一个search得到,但pull不了的特殊镜像)
  • 其他镜像可以之为基础进行扩展。

所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等。

base 镜像提供的是最小安装的 Linux 发行版

我们大部分镜像都将是基于base镜像构建的。所以,通常使用的是官方发布的base镜像。可以在docker hub里找到。比如centos: https://hub.docker.com/_/centos

点击版本可以看到github里的Dockerfile

FROM scratch
ADD centos-7-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \
    org.label-schema.name="CentOS Base Image" \
    org.label-schema.vendor="CentOS" \
    org.label-schema.license="GPLv2" \
    org.label-schema.build-date="20181205"

CMD ["/bin/bash"]

ADD命令将本地的centos7的tar包添加到镜像,并解压到根目录/下。生成/dev,/proc/,/bin等。

我们可以自己构建docker base镜像,也可以直接使用已有的base镜像。比如centos。我们可以直接从docker hub上拉取。

拉取

docker pull centos

查看

# docker images centos 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              1e1148e4cc2c        2 months
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值