美文网首页
微服务中的容器技术---Docker(二),Docker中的镜像

微服务中的容器技术---Docker(二),Docker中的镜像

作者: singleZhang2010 | 来源:发表于2020-12-22 15:52 被阅读0次

概述

经过上一篇之后,对Docker应该已经不陌生了。
上一篇传送门《微服务中的容器技术---Docker(一),Docker的安装和使用

Docker镜像

那么我们应该知道镜像和容器该如何区分了,这里就更形象地说明一下:
Docker镜像是一个只读的Docker容器模板,含有启动Docker容器所需的文件系统结构及其内容,因此是启动一个Docker容器的基础。Docker镜像的文件内容以及一些运行Docker容器的配置文件组成了Docker容器的静态文件系统运行环境–rootfs。可以这么理解,Docker镜像是Docker容器的静态视角,Docker容器是Docker镜像的运行状态


Docker镜像

从上图可以看到,新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层

  • 共享宿主机的Kernel
  • Base镜像提供的是最小的Linux发行版
    Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。
  • 同一Docker主机支持运行多种Linux发行版
  • 采用分层的最大好处: 共享资源

继续来看Docker的分层结构

Docker容器层

当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

  • Copy-on-Write
    如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是不会被修改的,修改只会被限制在单个容器内(详细见:展开说明)
  • 只有容器层是可写的,容器层下面的所有镜像层都是只读
  • Docker从上往下依次查找
  • 容器层保存镜像变化的部分,并不会对镜像本身做任何修改
  • 一个镜像最多127层

※展开说明:
镜像层数量可能会很多,所有镜像层会联合在一起组成一个统一的文件系统。如果不同层中有一个相同路径的文件,比如 /a,上层的 /a 会覆盖下层的 /a,也就是说用户只能访问到上层中的文件 /a。在容器层中,用户看到的是一个叠加之后的文件系统。
文件操作

文件操作 说明
添加文件 在容器中添加文件时,新文件被添加到容器层*中
读取文件 在容器中读取某个文件时,Docker会从上往下依次从各个镜像层中查找此文件,

一旦找到,便将它复制到容器层中,然后打开并读入内存。
修改文件 在容器中修改某个文件时,Docker会从上往下依次从各个镜像层中查找此文件,

一旦找到,便将它复制到容器层中,然后修改它。
删除文件 在容器中删除某个文件时,Docker会从上往下依次从各个镜像层中查找此文件,

一旦找到,便在容器层中记录下此删除操作。(容器层只记录删除操作)

只有当需要修改时才复制一份数据,这种特性被称作 Copy-on-Write。可见,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。
这样就解释了我们前面提出的问题:容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享。

相关文章

  • 微服务中的容器技术---Docker(二),Docker中的镜像

    概述 经过上一篇之后,对Docker应该已经不陌生了。上一篇传送门《微服务中的容器技术---Docker(一),D...

  • 镜像常用命令

    一、启动容器 docker 命令格式,中括号代表可以省略 二、docker 镜像命令 Docker Images ...

  • docker基本操作

    开机启动docker 启动docker服务 查看当前镜像仓库中的镜像 启动时查日志 容器信息查看 强制卸载 -f ...

  • Docker相关概念

    Docker核心技术 容器镜像 docker架构 docker compose容器部署 docker常用命令帮助命...

  • Docker快速删除

    Docker快速删除 Docker删除无效的容器 Docker删除无用镜像 停用全部运行中的容器 删除全部容器 停...

  • docker相关概念理解

    Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。 Docker 容器(...

  • docker中 启动所有的容器命令

    docker中 启动所有的容器命令 docker中 关闭所有的容器命令 删除所有容器 删除所有镜像(慎用)

  • Docker深度学习1

    dockerfile 构建镜像docker run 启动容器docker-compose 启动服务 Docker ...

  • docker常用命令

    查看镜像$ docker images 查看容器查看运行中的容器:$ docker ps查看所有容器(包含已停止)...

  • [技术探索]Docker学习笔记

    镜像与容器 docker中容器和镜像的关系是什么?docker的整个生命周期有三部分组成:镜像(image)+容器...

网友评论

      本文标题:微服务中的容器技术---Docker(二),Docker中的镜像

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