栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Docker数据卷数据覆盖的问题

Docker数据卷数据覆盖的问题

1. 结论

参考博客:https://www.cnblogs.com/sparkdev/p/8504050.html

数据覆盖的两条规则:

如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。【覆盖

我的测试结论:

规则1:

按路径挂载:如果容器中的非空目录是其Dockerfile中使用VOLUME命令声明过的,则容器内文件会被复制到宿主机。否则,容器内的目录会被清空。具名或匿名挂载:复制规则始终成立 规则2:只要宿主机的目录不为空,则一定会覆盖掉容器内的目录。 2. 测试

重点在于规则1。

测试:使用Docker安装rabbitmq。

Rabbitmq的Dockerfile文件中声明了一个匿名数据卷:/var/lib/rabbitmq。

Rabbitmq的相关目录:

保存数据:/var/lib/rabbitmq保存配置:/etc/rabbitmq

/etc/rabbitmq中有一个conf.d文件夹,里面包含一个10-default-guest-user.conf的配置文件

测试一:按路径挂载数据和配置目录

[root@aliyunECS rabbitmq]# docker run -id --name=my-mq -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 15692:15692  
> -v ~/rabbitmq/data:/var/lib/rabbitmq 
> -v ~/rabbitmq/conf.d:/etc/rabbitmq/conf.d  
> --hostname=myrabbit rabbitmq:3.9.13-management
507b30bc5b8381a8c32eb060a9a2aaa091dc019b81c72c359a59bd63c3a671c5

[root@aliyunECS rabbitmq]# ls
conf.d  data
[root@aliyunECS rabbitmq]# ls data
mnesia
[root@aliyunECS rabbitmq]# ls data/mnesia/
rabbit@myrabbit  rabbit@myrabbit-feature_flags  rabbit@myrabbit.pid  rabbit@myrabbit-plugins-expand
[root@aliyunECS rabbitmq]# ls
conf.d  data
[root@aliyunECS rabbitmq]# ls conf.d/

现象:从12行和16行可以发现,宿主机上的data目录同步到了容器内的数据,但conf.d目录没有同步到。注意data目录是Dockerfile中使用VOLUME声明过的,而conf.d没有。

测试二:按具名挂载的方式挂载数据和配置目录

[root@aliyunECS rabbitmq]# docker run -id --name=mymq -p 5672:5672 -p 15672:15672 -p 25672:25672 -p 15692:15692 
> -v rabbit_data:/var/lib/rabbitmq 
> -v rabbit_conf.d:/etc/rabbitmq/conf.d  
> --hostname=myrabbit rabbitmq:3.9.13-management

[root@aliyunECS rabbitmq]# docker volume inspect rabbit_conf.d
[
    {
        "CreatedAt": "2022-02-22T15:55:15+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/rabbit_conf.d/_data",
        "Name": "rabbit_conf.d",
        "Options": null,
        "Scope": "local"
    }
]

[root@aliyunECS rabbitmq]# ls /var/lib/docker/volumes/rabbit_conf.d/_data
10-default-guest-user.conf

现象:观察第20行可以发现,使用具名挂载后,conf.d目录也被同步下来了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号