ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-11-27 13:32:24  阅读:181  来源: 互联网

标签:目录 lib containerd mnt 默认 云里 docker Docker


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

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

解决方案是: 

1. 挂载/dev/vdb存储到硬盘目录中, 当前设置为/mnt

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 服务:

sudo systemctl daemon-reload

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

systemctl start docker

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

 

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

docker inspect image_id | grep WorkDir

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

标签:目录,lib,containerd,mnt,默认,云里,docker,Docker
来源: https://blog.csdn.net/hintcnuie/article/details/121575578

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有