服务器环境:

操作系统: CentOS Linux release 7.4.1708 (Core)
docker版本: Docker version 1.13.1, build 774336d/1.13.1

1、简介

docker运行一段时间后镜像文件数据会变庞大,逐渐超过100G甚至持续增加,故docker运行服务器系统盘刚开始时就选择比较大的空间。或者将docker相关文件存放到一个独立的数据盘里这样不会影响系统盘的使用和运行,操作步骤如下。如果磁盘空间仍然不够用则采用磁盘扩容方法先进行磁盘扩容。参考文章运行中服务器磁盘扩容

1.1、停止docker服务

在进行docker配置修改之前需要通知docker服务,因为docker服务通知后容器运行状态也将停止,如果有多个容器在运行且部分容器为停止状态,则需要预先获取运行中的容器ID。

# 获取运行中的容器id
echo "运行中容器列表 " $(docker ps | awk '{ print $1}' | tail -n +2)

# 获取所有容器
echo "所有容器列表 " $(docker ps -a | awk '{ print $1}' | tail -n +2)

# 停止docker服务
systemctl stop docker

如下图所示:
批量获取运行中的容器id

1.2、设置docker数据成存储路径

找一个比较空间比较大的磁盘创建docker数据目录,df -h 命令可以查看磁盘使用情况

如图所示vdb1挂载在home目录,磁盘空间较大,我们选用此磁盘目录设置为docker数据存储路径。

# 创建目录
mkdir -p /home/extend/var/lib/docker
# 同步默认docker数据导新目录
rsync -avzP /var/lib/docker/* /home/extend/var/lib/docker/

1.3、配置 devicemapper.conf配置文件

路径为/etc/systemd/system/docker.service.d/devicemapper.conf。如果不存在则新建。

# 创建目录
mkdir -p /etc/systemd/system/docker.service.d/
# 编辑配置文件
vim /etc/systemd/system/docker.service.d/devicemapper.conf

# 配置文件内容如下
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  --graph=/home/extend/var/lib/docker

1.4、软连接方法实现磁盘路径修改

因为配置devicemapper.conf 文件未能生效,我采用了软连接的方式实现磁盘替换。

ln -s /home/extend/var/lib/docker /var/lib/docker

1.5、 重启docker服务以及docker容器

以上步骤完成后重启docker服务即可。如果docker容器未设置自动重启则需要手动启动相关容器。

# 启动docker服务
systemctl daemon-reload

systemctl restart docker #或 service docker start

systemctl enable docker

# 启动docker容器(此处为预先获取的运行中的docker容器id)
docker start 0629e042a4f1 449c51517bdc 73c7bc2c63bd d7633055b38c ee69019ad062 f821ec58e7d5 625f17aae9e6 36df3f200568 bb92ff6d0f6a 627dca248806 548aa954df20 e2a9933843e2 4313d17818d

1.5、 检查配置是否生效

docker info

命令检查Docker 的根目录.它将被更改为/home/extend/var/lib/docker

1.6、 检查镜像是否还在

docker images

1.7、 如果检查没问题则可以删除原目录文件/var/lib/docker/

最后修改日期: 2022年2月9日

作者