如何给docker扩容
原文链接:如何给docker扩容 | 柳门竹巷 (zhbblog.top)
参考文章:
- 动态扩容Linux根目录:/dev/mapper/centos-home分配部分空间给/dev/mapper/centos-root(/dev/mapper/centos-root经常会满,可是/dev/mapper/centos-home很空) - 金龟子大战猕猴桃 - 博客园 (cnblogs.com)
- Docker关闭不掉进程,Stopping docker.service, but it can still be activated by: docker.socket_warning: stopping httpd.service, but it can still _爱吃醋的小可爱的博客-CSDN博客
- Linux中fuser命令用法详解 - Tse先生 - 博客园 (cnblogs.com)
- 问题:INTERNAL ERROR: cannot create temporary directory及解决方法_cannot creat tempory-CSDN博客
具体步骤
在阅读本文时,默认你已安装docker和docker-compose。
-
请切换至
root用户,避免后续操作缺少相应的权限。# 切换至root用户,然后输入密码 su root -
查看当前磁盘使用情况。
# 查看磁盘 df -h # 文件系统 容量 已用 可用 已用% 挂载点 # devtmpfs # tmpfs # tmpfs # tmpfs # /dev/mapper/centos-root 50G 50G 16k 100% / # /dev/sda1 # /dev/mapper/centos-home 957G 33M 957G 1% /home # overlay 50G 50G 16k 100% /data/lib/docker/overlay2/... # overlay 50G 50G 16k 100% /data/lib/docker/overlay2/... # ...... # tmpfs重点关注
/dev/mapper/centos-root和/dev/mapper/centos-home两个文件系统。如果你的服务器上的/dev/mapper/centos-root和/dev/mapper/centos-home叫做别的名称,请将下文中的/dev/mapper/centos-root和/dev/mapper/centos-home替换成你服务器上对应的名称。 -
扩容思路
文件系统
/dev/mapper/centos-root对应/目录,文件系统/dev/mapper/centos-home对应/home目录。将/home文件夹备份,删除/home文件系统所在的逻辑卷,增大/文件系统所在的逻辑卷,增大/文件系统大小,最后新建/home目录,并恢复/home文件夹下的内容。 -
关闭
docker容器。# 关闭docker容器 docker-compose stop如果提示
INTERNAL ERROR: cannot create temporary directory,表明docker磁盘已经用完,可以使用docker system prune清理关闭的容器、无用的数据卷、网络和虚悬镜像,本文不对此进行赘述,请直接执行下一步的操作。 -
关闭
docker服务。# 关闭docker服务 systemctl stop docker # 查看docker状态 systemctl status docker如果输入
systemctl stop docker后提示:Warning: Stopping docker.service, but it can still be activated by: docker.socket,请先关闭docker自动唤醒机制,然后再关闭docker服务# 关闭docker自动唤醒 systemctl stop docker.socket -
备份源目录文件。
# 将/home目录打包放到/run目录下,也可以放在别的目录下,请保证该目录下磁盘空间充足 tar cvf /run/home.tar /home -
终止源目录下的进程。
# 终止/home目录下的进程 fuser -km /home如果提示
fuser命令不存在,如果安装fuser提示磁盘不足请重试# 安装fuser yum install -y psmisc -
卸载源目录。
# 卸载/home目录 umount /home -
删除源目录对应的逻辑卷。
# 删除/home目录对应的/dev/mapper/centos-home逻辑卷 lvremove /dev/mapper/centos-home -
扩容目标逻辑卷。
# 给/dev/mapper/centos-root数据卷扩容100g lvextend -L +100G /dev/mapper/centos-root -
扩大目标文件系统。
# 扩大/dev/mapper/centos-root文件系统 xfs_growfs /dev/mapper/centos-root -
重建源目录对应的逻辑卷。
请注意,此处的大小800G,最好是填写原大小减去为
centos-root扩容的大小# 重建/dev/mapper/centos-home逻辑卷 lvcreate -L 800G -n/dev/mapper/centos-home -
重建源文件系统。
# 创建/dev/mapper/centos-home文件系统 mkfs.xfs /dev/mapper/centos-home -
重新挂载源目录。
# 挂载/dev/mapper/centos-home目录 mount /dev/mapper/centos-home -
恢复源目录中的内容。
# 将备份文件解压 tar xvf /run/home.tar -C / -
再次查看当前磁盘使用情况。
# 查看磁盘 df -h # 文件系统 容量 已用 可用 已用% 挂载点 # devtmpfs # tmpfs # tmpfs # tmpfs # /dev/mapper/centos-root 150G 50G 100G 33% / # /dev/sda1 # /dev/mapper/centos-home 800G 33M 800G 1% /home # overlay 50G 50G 16k 100% /data/lib/docker/overlay2/... # overlay 50G 50G 16k 100% /data/lib/docker/overlay2/... # ...... # tmpfs -
重启服务器(如果重启
docker成功则跳过,如果失败请重启服务器)。# 重启服务器 reboot -
重启
docker服务。# 开启docker服务 systemctl start docker # 查看docker状态 systemctl status docker如果之前关闭了
docker自动唤醒机制,则进行恢复# 开启docker自动唤醒 systemctl start docker.socket -
重启所有
docker容器。docker-compose restart -
删除
/run下面的备份。rm -rf /run/home.tar