Docker之数据卷容器——一看就懂
程序员文章站
2022-06-07 22:41:33
...
文章目录
docker持久化有2种方式:
一个是常见的数据卷,可以在容器和宿主机之间共享一个目录。
二是使用数据卷容器的方式。
1、数据卷
数据卷的方式非常的简单,直接使用run 命令的时候使用-v 指定目录即可。
docker run -it -p 8888:8080 --name qsmtomcat2 -v /local/tomcat/webapps/ /usr/local/tomcat/webapps tomcat镜像id
2、数据卷容器
2.1、创建并使用
1.下载busybox
[[email protected] ~]# docker pull busybox
Using default tag: latest
Trying to pull repository docker.io/library/busybox ...
latest: Pulling from docker.io/library/busybox
91f30d776fb2: Pull complete
Digest: sha256:9ddee63a712cea977267342e8750ecbc60d3aab25f04ceacfa795e6fce341793
Status: Downloaded newer image for docker.io/busybox:latest
2.创建数据卷容器和业务容器
[[email protected] ~]# docker run -id -v /qsm --name qsmvolume c7c37e472d31
7aeee175fdebbd22f5c55b57ce92aa6be53f2651f8555e2de7822798e834736c
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aeee175fdeb c7c37e472d31 "sh" 6 seconds ago Up 5 seconds qsmvolume
6fb12b96a4a5 2622e6cca7eb "/docker-entrypoin..." 4 weeks ago Up 20 hours 0.0.0.0:80->80/tcp mynginx
[[email protected] ~]# docker run -id --volumes-from qsmvolume --name qsmbusybox1 c7c37e472d31
8a5e4be88132361e52d133cf7b32f2544d812c8b5c7e7f357c63f1dd451a2a13
3.创建数据进行共享、持久化
[[email protected] ~]# docker exec -it 7aeee175fdeb sh
/ # ls
bin dev etc home proc qsm root run sys tmp usr var
/ # cd /qsm/
/qsm # touch qsmtestfile.txt
/qsm # ls
qsmtestfile.txt
/qsm # vi qsmtestfile.txt
/qsm # cat qsmtestfile.txt
nihao qsm
/qsm # exit
[[email protected] ~]# docker exec -it 8a5e4be88132 sh
/ # ls
bin dev etc home proc qsm root run sys tmp usr var
/ # cd /qsm/
/qsm # ls
qsmtestfile.txt
/qsm # cat qsmtestfile.txt
nihao qsm
2.2、未运行的数据卷容器是是否可以继续使用
先说结论:可以。
验证如下:1.先停掉数据卷容器qsmvolume 。2,在启动一个业务容器qsmbusybox2。查看/qsm/qsmtestfile.txt是否存在。
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a5e4be88132 c7c37e472d31 "sh" 15 minutes ago Up 15 minutes qsmbusybox1
7aeee175fdeb c7c37e472d31 "sh" 17 minutes ago Up 17 minutes qsmvolume
6fb12b96a4a5 2622e6cca7eb "/docker-entrypoin..." 4 weeks ago Up 20 hours 0.0.0.0:80->80/tcp mynginx
[[email protected] ~]# docker stop 7aeee175fdeb
7aeee175fdeb
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a5e4be88132 c7c37e472d31 "sh" 16 minutes ago Up 16 minutes qsmbusybox1
7aeee175fdeb c7c37e472d31 "sh" 18 minutes ago Exited (137) 14 seconds ago qsmvolume
6fb12b96a4a5 2622e6cca7eb "/docker-entrypoin..." 4 weeks ago Up 20 hours 0.0.0.0:80->80/tcp mynginx
ec5d54d140fb 2622e6cca7eb "/docker-entrypoin..." 4 weeks ago Exited (0) 4 weeks ago qsmnginx
[[email protected] ~]# docker run -id --volumes-from qsmvolume --name qsmbusybox2 c7c37e472d31
5cf0da32f26f3c13b2f758acf6455b501d82da35b9de262da3c28a5f88ce8e4d
[[email protected] ~]# docker exec -it 5cf0da32 sh
/ # cat /qsm/qsmtestfile.txt
nihao qsm
2.2、是否可以挂载多个数据卷容器
答案:可以。
读者按照上面的命令可以自行验证。
2.3、若多个数据卷容器的共享目录相同,会发生什么。
答案:只有最后一个–volumes-from制定的数据卷容器会挂载成功。
读者按照上面的命令可以自行验证。
2.4、是否可以级联挂载。
答案:可以。
验证方法可以使用已经创建的业务容器qsmbusybox1作为数据卷容器–volumes-from进行验证。
[[email protected] ~]# docker run -id --volumes-from qsmbusybox1 --name qsmbusybox5 c7c37e472d31
0ebe1f18cf6e621b12ff1488cc5e5d6a23bc0bfcb29c2d3f3b5a7ea95bf06815
[[email protected] ~]# docker run -it --volumes-from qsmbusybox1 --name qsmbusybox6 c7c37e472d31
/ # cat /qsm/qsmtestfile.txt
nihao qsm
【完】
本笔记为小知识点
若查看系统学习docker,请移步指docker基础版笔记
【正在去BAT的路上修行!!!】