docker-compose-volumes的说明
docker-compose中有两种方式可以设置数据持久化。
1.绝对路径
1 |
|
使用绝对路径直接挂载到本地,直观易于查看,但需要管理本地的路径。
2.卷标
1 |
|
使用卷标的方式,简洁易于管理,但是数据实际存放的位置需要费点周折才能看到。
查看卷标的信息
1 |
|
还可以查看所有的卷标
1 |
|
volumes与Bind Mount的区别
不同点 | volumes | bind mounts |
---|---|---|
Source位置 | /var/lib/docker/volumes/… | 可以任意指定 |
对已有挂载点影响 | 在容器第一次启动的时候,容器内映射目录的数据复制到volume | 宿主机路径下的文件,覆盖掉容器内挂载路径文件的内容 |
是否支持单个文件映射 | 不支持,只能是目录 | 支持 |
权限控制 | 读写或者只读 | 读写或者只读 |
移植性 | 强,无需指定宿主机文件目录,默认在/var/lib/docker/volumes/ 目录下 |
弱,与宿主机绝对路径强绑定 |
1.关于volumes移植性强的解释
假设我们现在有一百台服务器,我们希望nginx容器在任何一台服务器上启动都使用同样的配置,达到同样的运行效果,该怎么做?
如果是Bind Mount,Source文件路径你可以随意指定、随意命名。如果想达到一定的规范度,只能从制度上进行规范,在技术上很难限制。
如果是volumes,运维人员创建的Volume只要名称是一致的,就可以认为文件路径是一致的,默认统一的放在/var/lib/docker/volumes/目录下。假如某天某个服务器/var/lib/docker磁盘空间不足,我们只需要重新挂载一个服务器硬盘,将/var/lib/docker的文件及目录整体迁移至新硬盘的新路径即可,修改docker默认存储路径为新路径,就对于容器的运行没有任何影响。
2.如何修改docker默认存储路径/var/lib/docker
vim /etc/docker/daemon.json ,添加如下内容:
1 |
|
文件修改之后,重启docker引擎(需要注意的是:修改默认存储路径,如果你不希望原始的镜像及容器、数据卷等丢失,请先进行数据迁移。)
1 |
|
docker-compose-volumes的说明
https://johnnysxy.github.io/2023/05/15/docker-compose-volumes的说明/