在Linux中将Docker隔离到独立驱动器
在Linux中将Docker隔离到独立驱动器
当然可以做到!我之前帮朋友处理过类似需求,完全能把Docker的核心数据都迁移到独立挂载的驱动器上,下面一步步来操作:
先停止Docker相关服务:迁移前一定要停掉Docker,避免数据损坏,执行以下命令:
sudo systemctl stop docker sudo systemctl stop docker.socket sudo systemctl stop containerd准备并挂载独立驱动器:
- 先确认你的驱动器设备名(比如
/dev/sdX,X是具体字母),注意备份驱动器上的现有数据,然后格式化(这里用ext4格式,兼容性好):sudo mkfs.ext4 /dev/sdX - 创建固定挂载点:
sudo mkdir -p /mnt/docker-drive - 编辑
/etc/fstab实现开机自动挂载,执行sudo nano /etc/fstab,添加以下内容(替换成你的设备名):/dev/sdX /mnt/docker-drive ext4 defaults 0 2 - 保存后执行挂载命令生效:
sudo mount /mnt/docker-drive
- 先确认你的驱动器设备名(比如
迁移现有Docker数据:
用rsync迁移能保证文件权限和属性完全一致,比直接移动更安全:sudo rsync -aX /var/lib/docker/ /mnt/docker-drive/docker/迁移完成后,把原目录重命名备份(方便后续验证没问题再删除):
sudo mv /var/lib/docker /var/lib/docker.old修改Docker配置,指定新数据目录:
Ubuntu上Docker的配置文件是/etc/docker/daemon.json,如果不存在就创建它:sudo nano /etc/docker/daemon.json添加以下JSON内容,指定新的数据根目录:
{ "data-root": "/mnt/docker-drive/docker" }保存退出后,重新加载系统服务配置:
sudo systemctl daemon-reload重启Docker并验证:
重启Docker服务:sudo systemctl start docker验证容器能否正常运行:
sudo docker run hello-world再检查Docker的数据路径是否正确:
docker info | grep "Docker Root Dir"如果输出显示你设置的
/mnt/docker-drive/docker,就说明配置成功了。
关于你提到的docker.sock:这个文件是Docker守护进程和客户端通信的Unix套接字,它本身只是一个通信端点,不存储任何容器镜像、数据卷这类核心数据,所以完全不需要把它移到独立驱动器上。只要我们把data-root指向了新驱动器,所有Docker产生的实际数据都会存在那里,已经实现了Docker数据与系统盘的隔离。
备注:内容来源于stack exchange,提问作者Mlacek
相关产品推荐
相关产品推荐

