当前位置:首页 > docker > docker操作 > 正文内容

docker数据卷

docker数据卷介绍

Docker可以将开发的应用和运行的环境一起打包形成容器运行,Docker容器产生的数据,如果不通过Commit生成一个新的镜像,使得这些数据成为镜像的一部分保存下来,那当容器删除时,数据自然也就没有了(相当于别人删除跑路),为了能够保存数据在Docker中我们使用数据卷。
卷就是目录和文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过union file system提供一些用于持续存储或共享数据的特性。(将docker容器内的数据保存进宿主机的磁盘中)
卷的设计目的就是数据持久化(类似于redis中的rdb和aof文件),完全独立于容器的生命周期,因此docker不会在容器删除时删除其挂载的容器卷。

数据卷可在容器之间共享或重用数据

数据卷的更改会直接生效

数据卷的更改不会包含到镜像的更新中

数据卷的生命周期一直持续到没有容器使用它为止


docker数据存储方式

直接存储容器中:数据只保存在容器中,不保存在宿主机中,容器删除或丢失后数据也会丢失

目录/文件映射:将宿主机的目录/文件映射到容器内的目录中

挂载数据卷:创建数据卷,将容器内指定目录,挂载到数据卷上,数据卷会存储在宿主机上,多个容器也可以挂载同一个数据卷,用来进行数据共享

创建数据容器:创建一个单独的容器,用来存储数据,其他容器挂载到这个容器上,会继承数据容器的数据卷挂载关系,数据容器可以挂载数据卷


docker数据卷操作

创建数据卷

创建数据卷volume1

]# docker volume create volume1

image.png


挂载数据卷

在创建/运行容器时容器时,将数据卷挂载到容器上

数据卷挂载:

创建容器nginxtest1,并将/nginx目录挂载数据卷volume1

]# docker run -itd --name nginxtest1 -p18091:18080 --volume volume1:/nginx nginx:1.24.0


本地目录/文件挂载:

创建容器nginx1,并将/opt/conf目录映射到容器的/nginx/conf上

]# docker run -itd --name nginx1 -p18092:18082 --volume /opt/conf:/nginx/conf nginx:1.24.0


创建容器es1,并将/opt/es/elasticsearch.yml目录映射到容器的/elasticsearch/config/elasticsearch.yml

]# docker run -itd --name es1 -p19200:19200 --volume /opt/es/elasticsearch.yml:/elasticsearch/config/elasticsearch.yml elasticsearch:7.17.0


通过引用其他容器挂载点或挂载数据卷,来实现容器间的数据共享

创建容器nginxtest2,挂载数据卷,挂载本地数据卷的容器目录为/nginx/html

]# docker run -itd --name nginxtest2 -p18080:18080 --volume nginx1:/nginx/html nginx:1.24.0

创建容器nginxtest3,挂载容器nginxtest2

]# docker run -itd --name nginxtest3 -p18081:18080 --volumes-from nginxtest2 nginx:1.24.0

创建容器nginxtest3,挂载容器nginxtest2

]# docker run -itd --name nginxtest3 -p18081:18080 --volumes-from nginxtest2 nginx:1.24.0

nginxtest3会继承nginxtest2挂载的数据卷


在nginxtest2中写入文件,在nginxtest3中查看

image.png


相关参数解释


参数说明
--volume,-v

指定数据盘及本地挂载目录,或者本地目录/文件映射到容器中,配置方式:

--volume【数据卷名称】:【挂载容器内目录】

--volume【本地目录/文件】:【映射到容器路径】


例:

--volume data1:/opt/data1   将docker数据盘data1挂载到/opt/data1上


--volume /opt/nginx/nginx.conf:/nginx/conf/nginx.conf    将本地的/nginx/conf/nginx.conf文件映射到容器中的/nginx/conf/nginx.conf

--volumes-from

引用其他容器的挂载,配置方式:

--volumes-from 【容器名称】

例:

--volumes-from nginx1   继承容器nginx1的挂载



删除数据卷

直接删除数据卷

]# docker rm volume1

这种方式不能删除已挂载容器的数据卷


删除容器时删除关联的数据卷

指定 "-v" 参数

]# docker rm -v nginxtest1

这种方式只能删除匿名卷,如果是命名卷,需进行手动删除

image.png


删除所有未被容器使用的卷

]# docker volume prune

注意,这种方式只能删除匿名卷


指定 "--all" 参数    删除所有未被容器使用的卷

]# docker volume prune --all

image.png

扫描二维码推送至手机访问。

版权声明:本文由个人博客发布,如需转载请注明出处。

本文链接:https://opszzfwordpress.club/post/206.html

分享给朋友:
返回列表

上一篇:docker命令

下一篇:docker网络

“docker数据卷” 的相关文章

docker镜像基本操作

docker镜像基本操作

拉取镜像]# docker pull nginx  ...

docker容器基本操作

docker容器基本操作

关于docker容器的相关命令,可以参考:docker命令说明创建容器每运行一个镜像,就会创建一个容...

docker命令

docker命令

docker run名称说明示例-i 以交互模式运行容器,通常与 -t 同时使用...

docker网络

docker网络

docker网络模式介绍名称说明适用名称说明适用container没有单独的ip,端口与其他容器共享...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。