修改 Docker 默认数据存储路径

修改 Docker 默认数据存储路径_第1张图片

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'

修改 Docker 默认数据存储路径_第2张图片

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
    

    修改 Docker 默认数据存储路径_第3张图片

    # 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 默认数据目录修改完成!!

你可能感兴趣的:(DevOps,docker,容器,运维)