docker数据持久存储基础

1、前言
容器适用无状态的应用,容器运行时的数据分为两部分:镜像层和容器层。镜像层的数据是永久存储的,而容器的数据随着容器的停止也就消失。
对于有状态的应用来说,没有持久化的数据不能支撑应用的正常运行,常用两种方式为有状态的应用提供持久化的数据存储:
01、Volumes
02、bind mount

备注:应用的状态就是应用组件完成他们的工作(即执行任务)时所需数据。

2、Volume
卷存储在由Docker管理的主机文件系统的一部分中(Linux上的/var/lib/docker/volumes/)。非Docker进程不应该修改这部分文件系统。卷是在Docker中保留数据的最佳方式。
volume的使用场景:
01.在多个容器之间共享数据
02.对主机的目录结构不清楚的
03.当您想要将容器的数据存储在远程主机或云提供商上而不是本地时
04.当您需要备份,还原或将数据从一台Docker主机迁移到另一台时,卷是更好的选择。您可以使用卷停止容器,然后备份卷的目录(例如/var/lib/docker/volumes/

3、创建volume

[root@docker-10.0.0.119 ~]# docker volume create  jixinjian
jixinjian
[root@docker-10.0.0.119 ~]# 

4、查看volume

[root@docker-10.0.0.119 ~]# docker volume ls 
DRIVER    VOLUME NAME
local     jixinjian

[root@docker-10.0.0.119 ~]# docker volume inspect  jixinjian 
[
    {
        "CreatedAt": "2022-10-22T12:17:03+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/jixinjian/_data",
        "Name": "jixinjian",
        "Options": {},
        "Scope": "local"
    }
]

5、删除volume

[root@docker-10.0.0.119 ~]# docker volume rm jixinjian 
jixinjian
[root@docker-10.0.0.119 ~]# docker volume  ls 
DRIVER    VOLUME NAME

6、使用volume、验证效果

[root@docker-10.0.0.119 ~]# docker volume ls 
DRIVER    VOLUME NAME
local     jixinjian

root@docker-10.0.0.119 ~]# docker run  -d  -it   --name Volume_test -v jixinjian:/tmp  centos 
9a39034fd2a8d82011f20f8161c712d1ecd01d72cca240f38e42ae7f8f5e13ab
[root@docker-10.0.0.119 ~]# 
[root@docker-10.0.0.119 ~]# 
[root@docker-10.0.0.119 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
9a39034fd2a8   centos    "/bin/bash"   3 seconds ago   Up 2 seconds             Volume_test
[root@docker-10.0.0.119 ~]# docker exec -it 9a39034fd2a8  /bin/bash 
[root@9a39034fd2a8 /]# echo "volume" >/tmp/volume.txt
[root@9a39034fd2a8 /]# exit 
exit
[root@docker-10.0.0.119 ~]# docker stop 9a39034fd2a8    #停止容器
9a39034fd2a8
[root@docker-10.0.0.119 ~]# docker start  9a39034fd2a8  #再启动容器
9a39034fd2a8
[root@docker-10.0.0.119 ~]# docker exec -it 9a39034fd2a8  /bin/bash 
[root@9a39034fd2a8 /]# ls -l  /tmp/    #可以看到数据还存在
total 20
-rw-r--r-- 1 root root   7 Oct 22 04:37 Volume_test
-rwx------ 1 root root 701 Sep 15  2021 ks-script-4luisyla
-rwx------ 1 root root 671 Sep 15  2021 ks-script-o23i7rc2
-rwx------ 1 root root 291 Sep 15  2021 ks-script-x6ei4wuu
-rw-r--r-- 1 root root   7 Oct 22 04:34 volume.txt
posted @ 2022-10-22 12:43  老天啊  阅读(68)  评论(0编辑  收藏  举报