阿里云里,如何切换默认的Docker 目录到数据盘?

最近在项目里面, 发现了一个问题, 就是当初为了快速搭建Gitlab ,使用的是Docker 方案, Docker 默认的安装路径,其实是存放在系统盘里面的, 默认的系统盘空间仅仅是40G。随着Gitlab 在公司的使用人数和使用频率不断增加,Docker 占用的空间最终超过35G, 把系统盘的空间吃没了, out of diskspace。。。反映到程序员们, 问题就是Git 不能用了, 提交不了代码, 连接不上数据库了!

检查问题, 主要是空间不够了, 但是当认真检查硬盘设置的时候, 发现在阿里云的设置里面, 其实是是有两块硬盘的, 1块是vda1, 40G, 另外一块是vdb, 之前申请的时候是120G, 但是没有投入使用!! 主要是没有挂载到目录中, 空闲了~~~

解决方案是: 

1. 挂载/dev/vdb存储到硬盘目录中, 当前设置为/mnt
阿里云里,如何切换默认的Docker 目录到数据盘?

2. 把docker目录从系统盘挂载到数据盘 

 主要分为下面几个步骤:

(1)首先先停止 Docker daemon,保证移动的时候数据完整,执行 service docker stop 命令停止 Docker daemon。
     具体命令:

sudo systemctl stop docker

检查docker 状态, 确保已经停用:

sudo systemctl status docker

通过ps 命令进一步检查:

ps faux | grep -i docker

确保Docker 进程不再运行之后, 进行下一步操作。

(2)先将 Docker 默认数据目录下的数据移动到一个备份的目录,例如 /mnt/Docker_data,执行命令:

mv /var/lib/docker /mnt/Docker_data

或者使用rsync命令:
 

rsync -avxP /var/lib/docker/ /mnt/Docker_Data/docker

 (3) 这一步里面, 就需要把Docker运行在新的数据盘里面, 这里有一篇可供参考的文章:秋刀鱼亦会过期 (https://blog.csdn.net/u014069688/article/details/102601088), 那里面的方法是, 直接把数据盘挂在Docker 目录下:

然后把新的格式化好的磁盘挂载到 /var/lib/docker 目录,执行命令 echo "/dev/vdb1 /var/lib/docker ext4 defaults 0 0" >>/etc/fstab && mkdir /var/lib/docker && mount -a。


这里我其实不太乐意这么做的, 因为这是把一个数据盘完全分配给Docker 了, 在我的服务器上, 就是相当于把一块120G硬盘, 都这么用了, 这有点可惜, 所以采用另外的方式, 就是把Docker 的工作目录切换到/mnt/Docker_data/docker

这涉及到更改Docker 服务的service 文件。

命令如下:

sudo vi /lib/systemd/system/docker.service

找到这一行:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

改成这样:

ExecStart=/usr/bin/dockerd -g /mnt/Docker_data/docker  -H fd:// --containerd=/run/containerd/containerd.sock

最终的结果:

阿里云里,如何切换默认的Docker 目录到数据盘?

 然后重新刷新Docker 服务:

sudo systemctl daemon-reload

这时候, 就可以启动Docker 服务了:
 

systemctl start docker

这时候, 使用systemctl status docker, 就能查看到dockerd的目录发生变化了:

阿里云里,如何切换默认的Docker 目录到数据盘?

 

另外一种验证方案, 就是查看某一个Docker 镜像的工作目录:

docker inspect image_id | grep WorkDir

这里就不贴图了,总之, 经过这么做之后, Docker 的工作目录成功更换到数据盘了, 搞定!

上一篇:kvm网络虚拟化管理


下一篇:【以太网硬件TCP/IP协议栈】硬件协议栈W5500应用