解决docker目录内存不足扩容处理

当我们使用docker时,经常会创建新镜像和新容器,在新容器中又会安装各种包,这些东西不是虚拟的,而是实实在在存于我们的磁盘中,默认在/var/lib/docker中,这个目录是属于系统盘的,而系统盘的空间往往不大,这样就会造成,随着时间的推移,docker越来越大,最后系统盘的空间被占满,所以这个时候就需要迁移docker的存储目录到更大的盘,才能把系统盘的空间腾出来。

当重启容器提示no space left 就是内存不足

1、查看服务器所有磁盘的使用情况:

bash 复制代码
df -h

可以看到每个盘的大小,这里可以看到/dev/mapper/centos-root总大小是50G(相对其他盘小太多),之前docker给占满了,因为我后面给docker相关迁移到了home下面,所以空出很大的空间,可以看到/dev/mapper/centos-home空间总大小984G,挂载点是/home,于是我给docker相关的目录迁移到/home下了

2、查看docker镜像和容器存储目录的空间大小

bash 复制代码
du -sh /var/lib/docker/

3、停止docker服务

bash 复制代码
systemctl stop docker

停止失败的时候可以更换命令试试

bash 复制代码
service docker stop

4、docker目录不足迁移扩容方法:

  1. 将docker迁移到大容量的磁盘中

    我这里是迁移到/home/docker目录下,相当于给原来的/var换成了/home/docker其他的结构和之前保持一致

    bash 复制代码
    # 首先创建目录
    mkdir -p /home/docker/lib/
    #迁移
    rsync -avz /var/lib/docker /home/docker/lib/
  2. 编辑/etc/docker/daemon.json,添加参数,将docker的目录迁移绑定

    红框是添加的参数,nginx版本不同data-root可能会不生效,可以给data-root换成graph试试

  3. 重载和重启docker服务

    bash 复制代码
    systemctl daemon-reload && systemctl restart docker

    如果systemctl依然运行失败,可以使用以下命令重启docker试试:

    bash 复制代码
    service docker restart

    检查docker是否绑定新目录

    bash 复制代码
    docker info

    如果Docker Root Dir由/var/lib/docker变为你指定的目录,说明迁移成功

    删除docker旧目录

    bash 复制代码
    rm -rf /var/lib/docker

    这个时候再去使用docker image 、 docker ps 就可以发现之前的镜像和容器数据都在,并且可以正常使用啦

相关推荐
QYR-分析3 小时前
26.2% 高增!场内及园区无人物流车,厂内短驳自动化的 L4 货运载体
运维·自动化
java_logo4 小时前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频4 小时前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui
时间售卖铺4 小时前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
分布式存储与RustFS4 小时前
CI 老被 Docker Hub 的 429 卡住,自建 Registry 把镜像搬进内网
运维·docker·开源·镜像仓库·对象存储·ci·rustfs
Ruiery4 小时前
Linux 6.6内核内存管理深度解析(十七):vmalloc — 内核要“虚拟连续“就够:物理页逐个凑,页表来连
linux·运维·服务器
pt10434 小时前
Cisco设备网络安全系列-19:网络安全事件驱动与调整
运维·网络
sxgzzn4 小时前
如何利用无人机提升光伏巡检效率?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统
R²AIN SUITE4 小时前
企业智能体平台私有化部署需要什么服务器?CPU、内存、显卡与项目管理集成的7个评估项
运维·服务器
刚入门的大一新生4 小时前
Linux-线程封装
linux·运维·服务器