描述说明

要将 Docker 的存储路径从 /var/lib/docker 修改为 /home/lib/docker,需通过配置 Docker 守护进程的配置文件实现。具体步骤如下:

步骤1、通过 docker info 查看现有路径的位置

docker info | grep "Docker Root Dir"

输出类似下面的内容:

Docker Root Dir: /var/lib/docker

步骤 2:停止 Docker 服务

修改配置前,需先停止 Docker 服务,避免数据不一致:

systemctl stop docker
# 若有 docker.socket 也需停止(部分系统需要)
systemctl stop docker.socket

步骤 3:创建新的存储目录并迁移数据

  1. 创建目标目录(确保 /home 有足够空间):

    mkdir -p /home/lib/docker
    
  2. 迁移现有数据(如果需要保留原镜像 / 容器,必须执行此步):使用 rsync 复制旧目录数据到新目录(保持文件权限和属性):

    rsync -av /var/lib/docker/ /home/lib/docker/
    

    -a 表示归档模式,-v 显示进度,确保复制完整)

步骤 4:配置 Docker 守护进程

Docker 守护进程的配置文件为 /etc/docker/daemon.json(若不存在则创建),通过 data-root 字段指定新路径:

  1. 编辑或创建配置文件:

    vim /etc/docker/daemon.json
    
  2. 写入以下内容(确保 JSON 格式正确,无多余逗号):

    {
      "log-opts": {
        "max-size": "5m",
        "max-file": "3"
      },
      "data-root": "/home/lib/docker",
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
  3. 保存退出(vim 中按 ESC,输入 :wq 回车)。

步骤 5:启动 Docker 服务并验证

  1. 启动 Docker 服务:

    systemctl start docker
    
  2. 验证新路径是否生效:

    docker info | grep "Docker Root Dir"
    

    若输出为 Docker Root Dir: /home/lib/docker,则表示修改成功。

步骤 6:清理旧目录(可选)

确认新路径正常工作后,可删除旧目录释放空间:

rm -rf /var/lib/docker

注意事项

  1. 确保 /home 分区有足够的存储空间(Docker 镜像 / 容器可能占用大量空间)。
  2. 若修改后 Docker 服务启动失败,检查 daemon.json 格式是否正确(可通过 journalctl -u docker 查看错误日志)。
  3. 迁移数据后,原有的镜像、容器、网络等数据会完整保留,无需重新拉取或创建。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐