Docker修改默认数据存储目录

在这里插入图片描述

Docker的默认存储目录是/var/lib/docker/,但是该目录一般存储空间有限,随着Docker的持续使用,安装镜像,启动容器,数据日志写入,会让该目录的的可使用空间越来越小;因此需要修改一下,默认的存储目录,让其放到空间更大的磁盘中;

查看磁盘空间大小

Linux的 df -h 命令可以查看磁盘的空间大小

df -h

返回结果

Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  16G     0   16G   0% /dev
tmpfs                     16G     0   16G   0% /dev/shm
tmpfs                     16G  1.6G   15G  10% /run
tmpfs                     16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/centos-root   98G   11G   88G  11% /
/dev/sda1                2.0G  150M  1.9G   8% /boot
/dev/loop0               4.5G  4.5G     0 100% /mnt/centos
/dev/sdb1                886G   77M  841G   1% /data
tmpfs                    3.2G     0  3.2G   0% /run/user/0

根据上面的返回结果,可以看到 / 跟目录下的空间大小只有 98 G ,而 /data 目录下有 886G 的空间,因此将Docker 的数据存储目录放到 /data 目录下会更好;可以避免Docker 的持续使用照成空间不够用的情况;

修改默认存储目录

  1. 停止Docker服务:运行以下命令停止Docker服务:

    sudo systemctl stop docker
    

    当使用systemctl stop docker命令停止Docker服务时,如果出现错误提示

    Warning: Stopping docker.service, but it can still be activated by: docker.socket
    

    这通常是因为Docker服务是通过docker.socket来启动的。

    要正确停止Docker服务,可以使用以下命令:

    sudo systemctl stop docker.socket
    sudo systemctl stop docker.service
    

    首先停止docker.socket,然后再停止docker.service。这样可以确保Docker服务被完全停止。

    当然这只是一个警告信息,你可以直接忽略,有句话说的很好,程序员只关心错误,不关心警告

  2. 复制现有的Docker数据目录:运行以下命令复制现有的Docker数据目录到新的位置。假设你要将数据目录从/var/lib/docker迁移到/data/dockerdata

    sudo rsync -av /var/lib/docker/ /data/dockerdata/
    

    这将递归地复制所有文件和子目录。

  3. 修改Docker配置文件:打开Docker的配置文件/etc/docker/daemon.json,如果该文件不存在,则创建它。在配置文件中添加以下内容:

    {
      "data-root": "/data/dockerdata"
    }
    

    /data/dockerdata替换为你选择的新数据目录的路径。

  4. 重新加载 daemon.json 文件:daemon.json 是 Docker 的配置文件,用于配置 Docker 引擎的行为。可以使用该文件重新配置和修改 Docker 引擎的默认行为。当我们修改了 daemon.json 文件时,需要重新加载该配置文件,使其生效。

    sudo systemctl daemon-reload
    
  5. 启动Docker服务:运行以下命令启动Docker服务:

    sudo systemctl start docker.service
    

    Docker将使用新的数据目录启动,并加载现有的容器和镜像。

  6. 验证是否修改成功:运行下面的命令

    sudo docker info
    

    查看docker info返回的结果,如果出现以下内容, Docker Root Dir: /data/dockerdata ,说明默认的存储目录修改成功。

  7. 删除原始目录文件,该命令请谨慎执行,或者先不执行,请确保默认存储目录修改成功之后再执行。

    sudo rm -rf /var/lib/docker
    

请注意,迁移Docker数据目录可能需要一些时间,具体取决于数据目录的大小和系统性能。在迁移过程中,请确保不要对Docker进行任何操作,以免数据丢失或损坏。完成迁移后,你可以验证Docker是否正常工作,并确保容器和镜像都在新的数据目录中。可以执行sudo docker images 命令,查看之前的镜像是否存在。

rsync命令参数解析

上面再复制Docker 数据目录的时候,用到了 rsync 命令,下面详细说明一下

rsync -av 是一个用于文件同步和备份的常用命令。它的含义是将源目录中的文件和目录同步到目标目录,并保持两者之间的一致性。

rsync 命令的常用参数如下:

  • -a:归档模式,表示以递归方式复制文件,并保持文件的属性(包括权限、所有者、组、时间等)。
  • -v:详细模式,显示文件传输的详细信息。
  • -r:递归复制目录及其内容。
  • -l:保持文件的硬链接。
  • -p:保持文件的权限。
  • -t:保持文件的时间戳。
  • -z:压缩传输数据。
  • -u:仅复制源目录中更新或新增的文件。
  • -h:以人类可读的格式显示文件大小。
  • --delete:删除目标目录中源目录没有的文件。

使用 rsync 命令的基本语法如下:

rsync [options] <source> <destination>

其中,<source> 是源目录或文件的路径,<destination> 是目标目录的路径。

例如,要将本地的 /path/to/source 目录同步到远程服务器的 /path/to/destination 目录,可以使用以下命令:

rsync -av /path/to/source user@remote:/path/to/destination

这将递归地将源目录中的文件和目录复制到远程服务器的目标目录,并保持两者之间的一致性。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值