修改 Docker 默认数据存储路径

本文介绍了如何在Linux(CentOS7.9)上安装Docker(18.06.3)后,修改默认的数据存储目录,以避免系统盘空间不足的问题。主要步骤包括查看默认路径、创建新数据目录、通过修改daemon.json文件或使用软链接方式来改变Docker的数据存储位置,并提供了详细的重启和数据迁移建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker

Author:rab

Linux Version:CentOS 7.9
Docker Version:18.06.3


会存在这样一种情况,当我们安装 Docker 的时候,如果不修改默认数据存储路径的话,其一般默认为 /var/lib/docker/ ,该目录是挂载于我们服务器系统盘(/)下的,当你后面运行的容器和下载的镜像越来越多时,就会导致磁盘空间被占满,从而无法登录操作系统。此时,就需要调整 Docker 的数据存储目录了。


1、yum 安装 Docker

这里以 yum 方式安装的 Docker 来举例

# 其实不管那种方式部署的Docker,其实原理都一样,掌握一种即可。

2、查看默认路径

docker info |grep 'Docker Root Dir'

image-20220722113558578

3、创建数据存储目录

mkdir /home/data/docker

4、修改配置文件(默认路径)

常用三种方法修改默认数据存储路径的方法(三选一即可)

  • 修改配置 daemon.json

    # 停止所有正在运行的容器
    docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
    
    # 停止docker服务
    systemctl stop docker.service
    
    # 修改配置
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://q1rw9tzz.mirror.aliyuncs.com"],
      "graph": "/home/data/docker"
    }
    
    # 启动docker服务
    systemctl start docker.service
    

    ⚠:重启后,你会发现所有容器和镜像都消失了,那是因为你的 Docker 的数据目录改变了,而旧数据还在原来的 /var/lib/docker/ 下,所以此时你是看不到有任何容器和镜像的。

    解决方法就是:将默认数据/var/lib/docker/替换新数据/home/data/docker后,再次重启即可。所以在部署 Docker 的时候就应该先规划好相关路径。

  • 修改 systemd 管理脚本

    vim /lib/systemd/system/docker.service
    
    ...
    ExecStart=/usr/bin/dockerd --graph /home/data/docker
    ...
    
    # 重载
    systemctl daemon-reload
    # 重启
    systemctl restart docker.service
    
  • 软链接方式(推荐)

    # 查看docker默认数据存储路径容量大小
    [root@jenkins-node1 data]# cd /var/lib/docker
    [root@jenkins-node1 docker]# du -sh
    

    image-20220722121218262

    # mv移动到新的数据目录,并做软链接
    [root@jenkins-node1 data]# mv /var/lib/docker /home/data/
    [root@jenkins-node1 data]# ln -s /home/data/docker /var/lib/docker
    [root@jenkins-node1 data]# ll /var/lib/docker
    lrwxrwxrwx 1 root root 17 Jul 22 12:15 /var/lib/docker -> /home/data/docker
    
    # 重启一下Docker
    systemctl start docker.service
    
    # 注意:不要直接将空目录/home/data/docker软链接到docker默认的数据目录上
    # 因为这样会导致数据目标链接的数据被清空,所以先mv一下在做软链接(除非你确认你的目标数据可以被覆盖)
    

至此,Docker 默认数据目录修改完成!!

### 如何修改 Docker 默认数据存储路径 #### 方法一:通过命令行参数设置 当启动 Docker 服务时,可以使用 `--graph` 参数来指定新的存储路径。此方法适用于临时测试环境。 ```bash sudo dockerd --graph=/data/tools/docker ``` 这种方法不会持久化配置,在重启后会恢复到默认设置[^1]。 #### 方法二:编辑系统服务文件 对于大多数 Linux 发行版来说,推荐的方式是在 `/etc/docker/daemon.json` 中添加如下内容: ```json { "data-root": "/data/tools/docker" } ``` 保存文件之后需要重启 Docker 服务使更改生效: ```bash sudo systemctl restart docker ``` 这种方式能够永久改变 Docker 的工作目录,并且更加稳定可靠[^2]。 #### 数据迁移注意事项 如果已经存在旧的数据,则需先停止所有正在运行的容器并将原有 `/var/lib/docker` 下的内容迁移到新位置。为了确保安全转移,建议执行以下操作顺序: 1. 停止 Docker 服务; 2. 复制现有数据至目标路径; 3. 更新配置指向新地址; 4. 验证无误后再删除源文件夹中的备份副本。 以上步骤有助于防止因意外情况造成的数据丢失风险[^3]。 #### Windows 平台下的特殊处理 针对 Windows 用户而言,除了上述通用做法外还可以利用 WSL2 来定制更灵活的解决方案。例如可以在安装过程中直接设定特定选项如 `--wsl-default-data-root` 指定镜像及其他资源的具体存放地点[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值