08-Docker容器数据卷

1. 使用数据卷目的

将Docker容器中的数据保存到本地服务器中,实现数据持久化,防止删除容器的同时,把需要的数据也一并删除掉。

2. 数据卷的本质

数据卷的本质,实际上是目录的挂载。将容器内的目录,通过Docker命令挂载到Linux的目录上。

多个容器的目录,可以同时挂载到同一个Linux的目录上。

3. 数据卷的使用
3.1 方式一 指定路径挂载
# 使用命令进行挂载
docker run -it -v 主机绝对路径目录:容器内目录 镜像名

# 挂载多个目录
docker run -it -v 主机绝对路径目录1:容器内目录1 -v 主机绝对路径目录2:容器内目录2 -v 主机绝对路径目录3:容器内目录3 镜像名

(1)开始挂载

docker run -it -v /home/test001:/home centos

在这里插入图片描述

(2)查看挂载结果

docker inspect c6f1549df213

在这里插入图片描述
(3)测试

在容器中写一个test.java文件,发现在主机的挂载目录中,该文件被同步过去

touch test.java

在这里插入图片描述
同样的,在主机的挂载目录中,新增一个hello.java文件,发现在容器的相应目录中,该文件也被同步进来。

这说明,主机的挂载目录和容器内的目录,是双向绑定的,任何一端的改动,都会同步到另一端。

touch hello.java

在这里插入图片描述

(4)挂载的好处

进行挂载后,修改数据,只需要在Linux上进行就可以了,而不用进入到容器内,并且修改后的数据会自动同步到容器内,不用管容器是否启动。

3.2 方式二 匿名挂载

(1)命令

# 匿名挂载,不指定主机目录,不指定卷名,只指定容器内的目录
docker run -d -v 容器内目录 镜像名

(2)示例

# 示例
docker run -d -P --name nginx01 -v /ect/nginx nginx 

# 查看所有的volume的情况
docker volume ls
3.3 方式三 具名挂载

(1)命令

# 具名挂载,不指定主机目录,但指定卷名和容器内的目录
docker run -d -v 卷名:容器内目录 镜像名

(2)示例

# 示例
docker run -d -P --name nginx02 -v juming-nginx:/ect/nginx nginx 

# 查看所有的volume(卷)的情况
docker volume ls

# 查看某个卷的信息
docker volume inspect juming-nginx

所有docker容器内的卷,在没有指定主机目录的情况下,都是挂载在/var/lib/docker/volumes/xxxx目录下。

在不指定主机路径的情况下,推荐使用具名挂载(不建议使用匿名挂载),方便找到需要的卷。

4. 数据卷容器

利用同一个镜像创建多个容器,多个容器之间数据的共享,也可以使用数据卷。

例如,利用centos镜像,创建3个容器,3个容器名称分别为centos01、centos02、centos03

# 1、利用centos镜像创建centos01容器
docker run -it --name centos01 centos

# 2、利用centos镜像创建centos02容器,并挂载centos01
docker run -it --name centos02 --volumes-from centos01 centos

# 3、利用centos镜像创建centos03容器,并挂载centos01
docker run -it --name centos03 --volumes-from centos01 centos

上面的3个容器中,centos02与centos03都是挂载了centos01,那么centos01就称为数据卷容器。由于它们之间的挂载关系,所以它们是互相打通的,彼此间数据同步共享。

容器中的数据,只要还有一个容器在使用,就不会消失,除非所有容器都被删除,并且没有保存到本地服务器。

5. 拓 展
# ro代表只读,readly
# 如果设置了容器的目录权限为ro,说明容器内部是无法操作的,只能通过宿主机来操作,然后再自动同步到容器内
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

# rw代表读写,readwrite
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值