You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:45:30