ITPub博客

首页 > 数据库 > 数据库开发技术 > 驾驭Docker存储驱动,解锁持久化与非持久化存储

驾驭Docker存储驱动,解锁持久化与非持久化存储

原创 数据库开发技术 作者:shuchaoyang 时间:2024-09-08 21:01:25 0 删除 编辑

7.1 Docker 存储驱动探索7.1.1 存储驱动7.1.2 存储驱动方式7.1.3 非持久化存储7.1.4 持久化存储

7.1 Docker 存储驱动探索

7.1.1 存储驱动

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

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

示例:

[superman@docker ~]$ docker info | grep -i storage
Storage Driver: overlay2
[superman@docker ~]$
7.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 ~]#
7.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 ~]#
7.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挂载将被删除,并且在该容器中写入的文件将不会保留。


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

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

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


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!


原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

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

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303375