DevOps
docker
docker
  • 基础知识
    • 概述
      • 核心概念
      • Docker 引擎
      • 基本架构
      • 联合文件系统
      • 网络虚拟化
    • 安装
      • 安装Docker Engine
      • 以非 root 用户使用 Docker
      • 配置 Docker 服务
    • 3. Docker镜像
      • 3.1 获取镜像(pull)
      • 3.2 查看镜像信息
        • images
        • tag
        • inspect
        • history
      • 3.3 搜寻镜像(search)
      • 3.4 删除镜像(rmi)
      • 3.5 清理镜像(prune)
      • 3.6 创建镜像
        • 基于已有容器创建
        • 基于本地模板导入
        • 基于Dockerfile创建
      • 3.7 导出镜像(save)
      • 3.8 导入镜像(load)
      • 3.9 上传镜像(push)
    • 4. Docker容器
      • 4.1 新建容器(create)
      • 4.2 启动容器(start)
      • 4.3 新建并启动容器(run)
      • 4.4 查看容器输出(logs)
      • 4.5 暂停容器(pause)
      • 4.6 恢复容器(unpause)
      • 4.7 停止止容器(stop)
      • 4.8 清除容器(prune)
      • 4.9 重启容器(restart)
      • 4.10 进入容器
      • 4.11 删除容器(rm)
      • 4.12 导出容器(export)
      • 4.13 导入容器(import)
      • 4.14 查看容器详情(inspect)
      • 4.15 查看容器内进程(top)
      • 4.16 查看统计信息(stats)
      • 4.17 复制文件(cp)
      • 4.18 查看变更(diff)
      • 4.19 更新配置(update)
    • 5. Docker仓库
      • 5.1 Docker Hub
      • 5.2 本地私有仓库
        • 使用HTTPS协议
        • 添加用户认证
        • 使用push时遇到的一些坑
    • 6. Docker数据管理
      • 6.1 数据卷
      • 6.2 数据卷容器
      • 6.3 利用数据卷容器来迁移数据
    • 7. 端口映射与容器互联
      • 7.1 端口映射
      • 7.2 容器互联
    • 8. Dockerfile
      • 8.1 基本结构
      • 8.2 指令说明
        • ARG
        • FROM
        • LABEL
        • EXPOSE
        • ENV
        • ENTRYPOINT
        • VOLUME
        • USER
        • WORKDIR
        • ONBUILD
        • STOPSIGNAL
        • HEALTHCHECK
        • SHELL
        • RUN
        • CMD
        • ADD
        • COPY
      • 8.3 创建镜像
      • 8.4 最佳实践
    • 9. Compose
      • 9.1 安装
      • 9.2 Compose文件
        • 9.2.1 services
        • 9.2.2 networks
        • 9.2.3 多文件Compose
          • Extend
          • Merge
          • Include
        • 9.2.4 锚点和别名
      • 9.3 Compose命令
      • 9.4 实例
  • 中间件安装
    • 安装tomcat
    • 安装redis
      • 单机
      • Cluster集群
    • 安装mysql
    • 安装ssh服务
      • 基于commit命令创建
      • 使用Dockerfile创建
    • 安装Apache
    • 安装ngnix
  • 操作系统镜像
    • BusyBox
    • ☑️Alpine
    • Debian/Ubuntu
    • CentOS/Fedora
  • Tips
    • docker 引擎开启远程访问
    • dockerfile-maven-plugin
    • IDEA 连接远程 docker
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. 基础知识
  2. 概述

联合文件系统

联合文件系统(UnionFS)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终结果。联合文件系统是实现 Docker 镜像的技术基础。

Docker 镜像自身就是由多个文件层组成,每一层有基于内容的唯一的编号(层 ID)。可以通过 docker history 查看一个镜像由哪些层组成。对于 Docker 镜像来说,这些层的内容都是不可修改的、只读的。而当 Docker 利用镜像启动一个容器时,将在镜像文件系统的最顶端再挂载一个新的可读写的层给容器。容器中的内容更新将会发生在可读写层。当所操作对象位于较深的某层时,需要先复制到最上层的可读写层。当数据对象较大时,往往意味着较差的 IO 性能。因此,对于 IO 敏感型应用,一般推荐将容器修改的数据通过 volume 方式挂载,而不是直接修改镜像内数据。

Docker 目前支持的联合文件系统种类包括 AUFS、btrfs、Device Mapper、overlay、overlay 2、vfs、zfs 等。多种文件系统目前的支持情况总结如下:

  • AUFS:最早支持的文件系统,对 Debian/Ubuntu 支持好,虽然没有合并到 Linux 内核中,但成熟度很高;

  • btrfs:参考 zfs 等特性设计的文件系统,由 Linux 社区开发,试图未来取代 Device Mapper,成熟度有待提高;

  • Device Mapper:RedHat 公司和 Docker 团队一起开发用于支持 RHEL 的文件系统,内核支持,性能略慢,成熟度高;

  • overlay:类似于 AUFS 的层次化文件系统,性能更好,从 Linux 3.18 开始已经合并到内核,但成熟度有待提高;

  • overlay 2:Docker 1.12 后推出,原生支持 128 层,效率比 Overlay FS 高,较新版本的 Docker 支持,要求内核大于 4.0;

  • vfs:基于普通文件系统(ext、nfs 等)的中间层抽象,性能差,比较占用空间,成熟度也一般。

目前,AUFS 应用最为广泛,支持也相对成熟,推荐生产环境考虑。

所有的镜像和容器都存储都在 Docker 指定的存储目录下,以 Ubuntu 宿主系统为例,默认路径是 /var/lib/docker。在这个目录下面,存储由 Docker 镜像和容器运行相关的文件和目录。

Previous基本架构Next网络虚拟化

Last updated 1 year ago

Was this helpful?