欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的路上修行!!!】