美文网首页@Docker
docker image到底是什么

docker image到底是什么

作者: 糙老爷们儿吃什么樱桃 | 来源:发表于2017-09-18 18:15 被阅读17次
  • image 里面是一层层文件系统,叫做 Union FS(联合文件系统)。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。虚拟文件系统的目录结构就像普通 linux 的目录结构一样,docker 通过这些文件再加上宿主机的内核提供了一个 linux 的虚拟环境。每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker 镜像中每一层文件系统都是只读的。构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。结构类似这样:
图1
  • 从基本的看起,一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成,bootfs(boot file system) 主要包含bootloader 和 kernel,bootloader 主要用于引导加载 kernel,当 kernel 被加载到内存中后 bootfs 会被 umount 掉。rootfs (root file system) 包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc 等标准目录和文件。下图就是 docker image 中最基础的两层结构,不同的 linux 发行版(如 ubuntu 和 CentOS ) 在 rootfs 这一层会有所区别,体现发行版本的差异性。
图2
  • 传统的 Linux 加载 bootfs 时会先将 rootfs 设为 read-only,然后在系统自检之后将 rootfs 从 read-only 改为 read-write,然后我们就可以在 rootfs 上进行读写操作了。但 Docker 在 bootfs 自检完毕之后并不会把 rootfs 的 read-only 改为 read-write,而是利用 union mount(UnionFS 的一种挂载机制)将 image 中的其他的 layer 加载到之前的 read-only 的 rootfs层之上,每一层 layer 都是 rootfs 的结构,并且是read-only 的。所以,我们是无法修改一个已有镜像里面的 layer 的!只有当我们创建一个容器,也就是将 Docker 镜像进行实例化,系统会分配一层空的 read-write 的 rootfs ,用于保存我们做的修改。一层 layer 所保存的修改是增量式的,就像 git 一样。
图3
  • 综上,image其实就是一个文件系统,它与宿主机的内核一起为程序提供一个虚拟的linux环境。在启动docker container时,依据image,docker会为container构建出一个虚拟的linux环境。

相关文章

  • docker image到底是什么

    image 里面是一层层文件系统,叫做 Union FS(联合文件系统)。联合文件系统,可以将几层目录挂载到一起,...

  • Docker

    Docker是什么? Docker有什么用? Docker中基本概念 镜像(Image): 容器(Containe...

  • Docker 中的简单操作。

    docker ps -a 查询容器 docker image ls 查询 image docker image p...

  • Docker 命令

    列出docker镜像 docker image ls docker images docker image ls ...

  • Docker_2_基础常用命令

    首先应该搞懂docker的image和container是什么关系。image:container = class...

  • docker_mysql

    docker ps docker image ls docker imager rm -f image_name ...

  • Docker命令

    Image docker images | docker image ls 列出镜像 docker rmi | d...

  • docker常用命令

    docker images / docker image ls # 查看有哪些image文件 docker p...

  • docker常用命令

    命令:docker pull: 获取image.docker build: 创建image.docker imag...

  • Docker基本操作命令

    Docker关于image的相关命令 查看本地image信息docker imagesdocker image l...

网友评论

    本文标题:docker image到底是什么

    本文链接:https://www.haomeiwen.com/subject/qiibsxtx.html