ITPub博客

首页 > 云计算 > Docker/K8 > 15 Docker容器存储架构:docker存储驱动简介

15 Docker容器存储架构:docker存储驱动简介

原创 Docker/K8 作者:shuchaoyang 时间:2024-11-13 18:54:19 0 删除 编辑

15 Docker容器存储架构:docker存储驱动简介 一、Docker 存储驱动探索 1.1 存储驱动 1.2 存储驱动方式 1.3 非持久化存储 1.4 持久化存储

15 Docker容器存储架构:docker存储驱动简介

一、Docker 存储驱动探索

image-20231229181629323

1.1 存储驱动

Storage driver处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户提供了多层数据合并后的统一视图。

[superman@docker ~]$ docker info | grep -i storage

示例:

[superman@docker ~]
$ docker info | 
grep 
-i storage

Storage Driver: overlay2
[superman@docker ~] $

1.2 存储驱动方式

Storage driver可以通过merge驱动方式将容器可读可写层融合在镜像上,默认挂载路径/var/lib/docker/overlay2。

注意:需要使用root用户才能看到挂载的路径。

[root@docker ~]
# docker ps -a

[root@docker ~] # df -Th
[root@docker ~] # docker run --name superman01 -dit alpine
[root@docker ~] # df -Th
[root@docker ~] # docker ps -a
[root@docker ~] # ls
/var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89

示例:

[root@docker ~]
# docker ps -a

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~] #  
[root@docker ~] # df -Th
文件系统                 类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg00-lv_root xfs        11G   7.0G   4.0G   64% /
devtmpfs                 devtmpfs   1.9G     0   1.9G     0% /dev
tmpfs                    tmpfs     1.9G     0   1.9G     0% /dev/shm
tmpfs                    tmpfs     1.9G   13M   1.9G     1% /run
tmpfs                    tmpfs     1.9G     0   1.9G     0% /sys/fs/cgroup
/dev/sda1                xfs      1014M  179M  836M   18% /boot
tmpfs                    tmpfs     378M   12K  378M     1% /run/user/42
tmpfs                    tmpfs     378M     0  378M     0% /run/user/0
[root@docker ~] #
[root@docker ~] # docker run --name superman01 -dit alpine
cb1a5d635c4f76ac2dc75ed32b524912f231b7231064aa438c10801fdf200cbc
[root@docker ~] #
[root@docker ~] # df -Th
文件系统                 类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg00-lv_root xfs        11G   7.0G   4.0G   64% /
devtmpfs                 devtmpfs   1.9G     0   1.9G     0% /dev
tmpfs                    tmpfs     1.9G     0   1.9G     0% /dev/shm
tmpfs                    tmpfs     1.9G   13M   1.9G     1% /run
tmpfs                    tmpfs     1.9G     0   1.9G     0% /sys/fs/cgroup
/dev/sda1                xfs      1014M  179M  836M   18% /boot
tmpfs                    tmpfs     378M   12K  378M     1% /run/user/42
tmpfs                    tmpfs     378M     0  378M     0% /run/user/0
overlay                  overlay    11G   7.0G   4.0G   64% /var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89/merged
[root@docker ~] #
[root@docker ~] # docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
cb1a5d635c4f   alpine     "/bin/sh"   3 minutes ago   Up 3 minutes             superman01
[root@docker ~] #
[root@docker ~] # ls /var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89
diff  link  lower  merged  work
[root@docker ~] #

1.3 非持久化存储

非持久化存储从属于容器,生命周期与容器相同,会随着容器的删除而被删除。

[root@docker ~]
# docker rm -f superman01

[root@docker ~] # ls /var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89

示例:

[root@docker ~]
# docker ps -a

CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS          PORTS     NAMES
cb1a5d635c4f   alpine     "/bin/sh"   11 minutes ago   Up 11 minutes             superman01
[root@docker ~] #
[root@docker ~] # docker rm -f superman01
superman01
[root@docker ~] #
[root@docker ~] # docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~] #
[root@docker ~] # df -Th
文件系统                 类型      容量  已用  可用 已用% 挂载点
/dev/mapper/vg00-lv_root xfs        11G   7.0G   4.0G   64% /
devtmpfs                 devtmpfs   1.9G     0   1.9G     0% /dev
tmpfs                    tmpfs     1.9G     0   1.9G     0% /dev/shm
tmpfs                    tmpfs     1.9G   13M   1.9G     1% /run
tmpfs                    tmpfs     1.9G     0   1.9G     0% /sys/fs/cgroup
/dev/sda1                xfs      1014M  179M  836M   18% /boot
tmpfs                    tmpfs     378M   12K  378M     1% /run/user/42
tmpfs                    tmpfs     378M     0  378M     0% /run/user/0
[root@docker ~] #
[root@docker ~] # ls /var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89
ls: 无法访问/var/lib/docker/overlay2/082c4e5f762d98d0eb7a0104a06f24f9b82b88a746206456f51b89a754c1cf89: 没有那个文件或目录
[root@docker ~] #

1.4 持久化存储

Storage driver管理的容器层,一般用于放置无状态的应用的数据,即不需要持久化存储的数据。对于需要持久化存放的数据,则需要使用卷(volume)或绑定挂载(bind mount)。

  1. 无论是卷(volume)还是绑定挂载(bind mount),其本质上是宿主机文件系统中的目录或文件。

  2. 无论是卷(volume)还是绑定挂载(bind mount),其上存放的数据生命周期独立于容器。即容器删除之后,卷(volume)或绑定挂载(bind mount)上的数据,依旧存在。

除卷(volume)和绑定挂载(bind mount)以外还可以提供tmpfs挂载,与卷(volume)和绑定挂载(bind mount)相反,tmpfs挂载是临时的,并且仅持久保存在主机内存中。当容器停止时,tmpfs挂载将被删除,并且在该容器中写入的文件将不会保留。

存储驱动类型 功能
overlay2 所有当前Linux发行版都支持的首选存储驱动程序。
AUFS 仅在nginx和Debian上支持。
Device Mapper CentOS和RHEL的推荐存储驱动程序。但当前版本的CentOS和RHEL现在都支持 overlay2。
Btrfs 仅在SLES上支持。
ZFS 仅支持nginx 14.04或更高版本。
VFS 主要用于测试目的,不建议用于生产环境。

image-20231229182348251

原文链接: https://mp.weixin.qq.com/s?__biz=MzkxNzI1OTE3Mw==&mid=2247492662&idx=1&sn=3fc639559de595e36d4cb169d2f7263e&chksm=c141f2fcf6367beaf7f7e83a56a4771efcdc114723b6b42c976cb46e16d3c8ef24121f814353&token=1641304794&lang=zh_CN#rd

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3048667/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303522