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 的持续使用照成空间不够用的情况;
修改默认存储目录
-
停止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服务被完全停止。当然这只是一个警告信息,你可以直接忽略,有句话说的很好,程序员只关心错误,不关心警告。
-
复制现有的Docker数据目录:运行以下命令复制现有的Docker数据目录到新的位置。假设你要将数据目录从
/var/lib/docker
迁移到/data/dockerdata
:sudo rsync -av /var/lib/docker/ /data/dockerdata/
这将递归地复制所有文件和子目录。
-
修改Docker配置文件:打开Docker的配置文件
/etc/docker/daemon.json
,如果该文件不存在,则创建它。在配置文件中添加以下内容:{ "data-root": "/data/dockerdata" }
将
/data/dockerdata
替换为你选择的新数据目录的路径。 -
重新加载
daemon.json
文件:daemon.json
是 Docker 的配置文件,用于配置 Docker 引擎的行为。可以使用该文件重新配置和修改 Docker 引擎的默认行为。当我们修改了daemon.json
文件时,需要重新加载该配置文件,使其生效。sudo systemctl daemon-reload
-
启动Docker服务:运行以下命令启动Docker服务:
sudo systemctl start docker.service
Docker将使用新的数据目录启动,并加载现有的容器和镜像。
-
验证是否修改成功:运行下面的命令
sudo docker info
查看
docker info
返回的结果,如果出现以下内容,Docker Root Dir: /data/dockerdata
,说明默认的存储目录修改成功。 -
删除原始目录文件,该命令请谨慎执行,或者先不执行,请确保默认存储目录修改成功之后再执行。
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
这将递归地将源目录中的文件和目录复制到远程服务器的目标目录,并保持两者之间的一致性。
标签:文件,存储,sudo,默认,目录,docker,data,Docker From: https://blog.csdn.net/aaalk1001/article/details/140804010