存储是 Docker 中非常重要的部分,了解 Docker Storage drivers 中 image、layer 的概念和设计细节有利于更好的优化程序在 Docker 中的读写性能。本文记录了 Docker docs 中 About storage drivers 部分的内容。
Storage drivers versus Docker volumes
Storage drivers(存储驱动) | Docker volumes(卷) | |
解释 | Docker 使用 Storage drivers 程序来存储镜像层,并将数据存储在容器的可写层中。 容器的可写层在容器被删除后不会持久化,适合存储运行时产生的临时数据。 | Volumes 是一个或多个容器中的一个特别指定的目录,它绕过联合文件系统。 Volumes 可以持久保存数据,独立于容器的生命周期。 因此,当删除容器时,Docker 不会自动删除 Volumes,它也不会“垃圾收集”不再被容器引用的 Volumes。 |
特点 | 依赖于容器存在 | 独立于容器的生命周期 |
Images and layers
容器 image 由一系列 layer 构成, 在 Dockerfile 中 layer 由一个指令表示,除了最后一层 layer 之外的每一层 layer 都是只读的。
# syntax=docker/dockerfile:1
FROM ubuntu:18.04
LABEL org.opencontainers.image.authors="org@example.co