Tianyi's Blog Tianyi's Blog
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)

Tianyi

一直向前,永不停止
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)
  • 镜像站

  • 环境

  • Docker

    • docker使用
    • docker镜像
    • docker原理
      • Docker镜像分层
        • docker分层原理
        • 更多内容
      • Docker的三种挂载方式
    • docker安装
    • Rancher容器管理平台
  • 工具

  • Linux

  • 新知

  • Jenkins

  • Consul_服务注册发现

  • SHELL

  • 项目

  • 运维
  • Docker
tianyi
2023-10-25
目录

docker原理

# Docker镜像分层

Docker使用分层的方式来组织镜像,实现文件的共享和重用。通过这种方式,可以减少存储空间的占用。

举例来说,假设我们有一个名为nginx的镜像。它最底下的一层是一个封装好的Linux系统。在这个基础上,我们可以创建多个上层,每个上层可以包含不同的应用程序。这样,当有多个容器时,它们可以共享相同的底层Linux系统,大大减少了存储空间的占用。这种分层结构很巧妙地实现了环境与应用之间的隔离性。

# docker分层原理

具体的文件系统实现可能有多种方式,Docker默认使用的overlay driver。 在不更改其他文件的情况下,查看Docker容器中的内部文件,我们可以了解其分层结构:底层是lower层,然后是merge层,最上层是upper层,还有worker层。

  • lower层主要用于存放最小的Linux系统,即镜像层。
  • upper层用于存放容器内部的修改文件,例如diff文件夹,即容器层。
  • merge层将upper层和lower层合并起来,用来映射这些文件,称作映射层,虚拟层。

这种overlay存储方式依赖写时复制技术来完成。当需要修改底层Linux系统中的文件时,不直接在那个文件上进行修改,而是在容器层添加一个文件,并优先调用这个容器层的文件,而非镜像层的文件。这种实现方法类似于JAVA中重写父类方法的原理。

因此,一个容器的运行是基于镜像层和容器层的关系。

# 更多内容

如果需要更多相关信息,可以访问Docker官网的存储部分(storage)查看详细内容。

Docker手册:https://docs.docker.com/storage/storagedriver/select-storage-driver/ (opens new window)

# Docker的三种挂载方式

卷挂载由Docker自动管理容器中的数据,绑定挂载将容器路径映射到宿主机上的路径

  • 卷挂载(Volume Mounting):这是一种由Docker来自动管理容器中数据的挂载方式。卷是一个可被容器读写的特殊目录,它可以跨多个容器共享和重用。在卷挂载中,容器中的数据以镜像中的内容为基础。使用卷挂载时,Docker会自动处理数据的存储和管理。

  • 绑定挂载(Bind Mounting):绑定挂载允许将容器中的路径直接映射到宿主机上的路径。在绑定挂载中,宿主机的内容优先于容器镜像中的内容。这种方式可能导致空挂载问题,因此在使用绑定挂载时需要确保绑定目录中的文件夹内容已经准备好再进行挂载。

  • 内存挂载(Tmpfs Mounting):内存挂载是一种将容器中的路径挂载到内存上的方式。这意味着容器中的文件将完全存储在内存中,而不是写入到磁盘上。内存挂载通常用于需要在容器间快速共享数据或临时存储敏感数据的场景。

另外,关于集群方面,一般情况下不会使用Docker自带的集群功能,而是使用更为专业化的Kubernetes(简称K8s)进行容器的编排和管理。因此,关于Docker的集群内容可以不加深入地探讨。

完善页面 (opens new window)
docker镜像
docker安装

← docker镜像 docker安装→

最近更新
01
JDK
02-23
02
BadTasteCode && 优化
09-11
03
Gradle 实践操作指南及最佳实践
09-11
更多文章>
Theme by Vdoing | Copyright © 2021-2025 Tandy | 粤ICP备2023113440号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式