Pop!_OS 20.04下如何将Docker Named Volume创建到其他硬盘分区
Docker卷指定到其他硬盘分区的配置方案
前置检查
首先确认目标机械硬盘分区已经配置fstab永久挂载,避免重启后挂载路径失效。
方案1:仅针对爬虫容器做绑定挂载(推荐,不影响其他Docker服务)
你之前使用docker run -v 卷名:/容器路径的方式创建的是Docker托管的命名卷,默认会存储在Docker根目录下,因此会一直生成在/var/lib/docker/volumes/路径。要直接写入目标分区,使用绑定挂载即可:
- 第一步:在目标分区创建专属的数据目录,配置读写权限:
# 替换为你实际的分区挂载路径 sudo mkdir -p /mnt/hdd/crawler_data sudo chmod 755 /mnt/hdd/crawler_data - 第二步:启动容器时使用绝对路径绑定挂载:
冒号左侧为本地硬盘的绝对路径,右侧为容器内部存放爬取数据的目录,所有写入容器对应目录的数据会直接存入目标机械硬盘分区docker run -v /mnt/hdd/crawler_data:/容器内数据存储目录 你的镜像启动参数
方案2:修改Docker全局根目录,所有资源均存储到目标分区
如果需要将所有Docker镜像、容器、卷都迁移到目标分区,修改Docker数据根目录即可:
- 第一步:停止Docker相关服务
sudo systemctl stop docker docker.socket containerd - 第二步:迁移原有Docker数据到目标分区
# 替换为你目标分区的Docker根目录路径 sudo rsync -av /var/lib/docker/ /mnt/hdd/docker_root/ # 备份原有数据 sudo mv /var/lib/docker /var/lib/docker.old - 第三步:修改Docker配置指定根目录,新建/编辑
/etc/docker/daemon.json:{ "data-root": "/mnt/hdd/docker_root" } - 第四步:重载配置启动服务
sudo systemctl daemon-reload sudo systemctl start docker docker.socket containerd - 第五步:验证配置生效,输出为你设置的目标路径即为成功:
docker info | grep "Docker Root Dir" - 验证所有容器、镜像运行正常后,可删除原有备份释放空间:
sudo rm -rf /var/lib/docker.old
30天数据留存归档补充
可直接配置定时任务实现自动归档,将以下命令写入crontab每日执行即可:
# 替换为你实际的数据路径和归档路径 find /mnt/hdd/crawler_data -type f -mtime +30 -exec mv {} /mnt/hdd/crawler_archive/ \;
内容的提问来源于stack exchange,提问作者mcrdy455
相关产品推荐
相关产品推荐

