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

Storage driver处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户提供了多层数据合并后的统一视图。
[superman@docker ~]$ docker info | grep -i storage
示例:
[superman@docker ~] $ docker info | grep -i storage
Storage Driver: overlay2
[superman@docker ~] $
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 ~] #
非持久化存储从属于容器,生命周期与容器相同,会随着容器的删除而被删除。
[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 ~] #
Storage driver管理的容器层,一般用于放置无状态的应用的数据,即不需要持久化存储的数据。对于需要持久化存放的数据,则需要使用卷(volume)或绑定挂载(bind mount)。
无论是卷(volume)还是绑定挂载(bind mount),其本质上是宿主机文件系统中的目录或文件。
无论是卷(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 | 主要用于测试目的,不建议用于生产环境。 |

👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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