docker清理大杀器/docker的overlay文件占用磁盘太大的解决

【看网上都是什么迁移文件的就感觉不靠谱,治标不治本啊(这不应该是一个新生代coder的样子)】

du -sh* 一路查下去,发现overlay这个文件夹已经爆了。

docker system prune -a 才清理了7g的空间,那个文件夹还是30g

磁盘占用路从100%下降到80%左右,这哪里行啊,再跑两天还是满!

最后大杀器来了 安装portainer

docker安装教程一堆

我这里使用dokcer-compose部署的所以下面是配置

 portainer:
  image: portainer/portainer
  restart: always
  ports:
  - "9000:9000"
  volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - /data/docker/portainer/data:/data

up -d 起来以后 nginx把端口搞出来,访问丫的

把那些【unuse】的全【remove】完事

再回去看磁盘占用 终于可以放心的划水啦~~~

ps:其实这个办法我们部门以前就用过,只不过。。。。。呃我丫给忘了呃呃呃。。。。所以写下来当个教训~

补充知识:Centos7 为Docker配置overlay存储驱动

前提:

RHEL或CentOS 使用新的docker存储驱动(overlay or overlay2),需要升级系统内核版本到3.10.0-514以上版本。梳理步骤如下:

确认内核

3.10.0-514以上版本

uname -r

3.10.0-514.++++.x86_64

系统升级

sudo yum upgrade --assumeyes --tolerant

sudo yum update --assumeyes

确认内核是否加载 overlay模块

lsmod | grep overlay

如果返回为空,需要配置模块加载

启用overlay

sudo tee /etc/modules-load.d/overlay.conf <<-'EOF'
overlay
EOF

重启系统

reboot

确认 overlay启用

lsmod | grep overlay

overlay

准备Docker存储分区

强烈建议另外准备一块磁盘或者分区,加参数 -n ftype=1 格式化为 xfs 格式,然后将 /var/lib/docker 挂载上去:

原因解释

XFS文件系统格式化时必须加 -n ftype=1

参数:-n 不真正创建文件系统,只是显示创建的信息;

ftype = value 允许inode类型存储在目录结构中,以便readdir,getdents不需要查找inode就可知道inode类型。默认为0,不存在目录结构中。

格式化本地磁盘

注意确认,格式化本地磁盘是否正确;

mkfs.xfs -f -n ftype=1 /dev/sdg5

确认磁盘信息

lsblk -a -f
NAME FSTYPE LABEL UUID         MOUNTPOINT

├─sdg4
├─sdg5 xfs   71165973-9e3f-4d8e-9a4e-2c00c0e70efa  

配置磁盘开机挂载

more /etc/fstab

UUID=71165973-9e3f-4d8e-9a4e-2c00c0e70efa /var/lib/docker xfs defaults 0 0

手动挂载磁盘

mount -a

查看磁盘挂载信息

lsblk

├─sdg5 8:101 0 200G 0 part /var/lib/docker

修改docker启动文件,设置使用overlay 存储

more /etc/sysconfig/docker

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--storage-driver=overlay --selinux-enabled --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
 DOCKER_CERT_PATH=/etc/docker
fi

或者

/etc/docker/daemon.json
{
 "storage-driver": "overlay2",
 "storage-opts": [
 "overlay2.override_kernel_check=true"
 ]
}

添加开机启动

systemctl daemon-reload
systemctl start docker
systemctl enable docker

验证docker 存储相关信息

$ docker info

Containers: 0
Images: 0
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true  <<===重点确认
 Native Overlay Diff: true
<output truncated>

如果在不支持 d_typ 的 overlay/overlay 驱动下使用docker,也就意味着 docker 在操作文件的时候,可能会遇到一些错误,比如 无法删除某些目录或文件,设置文件或目录的权限或用户失败等等。这些都是不可预料的错误。

举个具体的场景,就是,docker构建的时候,可能在构建过程中,删除文件等操作失败,导致构建停止。

以上这篇docker清理大杀器/docker的overlay文件占用磁盘太大的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Docker镜像存储overlayfs的使用

    一.概述 Docker中的镜像采用分层构建设计,每个层可以称之为"layer",这些layer被存放在了/var/lib/docker/<storage-driver>/目录下,这里的storage-driver可以有很多种如:AUFS.OverlayFS.VFS.Brtfs等.可以通过docker info命令查看存储驱动,(笔者系统是centos7.4): 通常ubuntu类的系统默认采用的是AUFS,centos7.1+系列采用的是OverlayFS.而本文将介绍以O

  • Docker overlay 网络搭建的方法

    Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,最大程度的保留原有网络,通过定义其上的逻辑网络,实现业务逻辑,解决原有数据中心的网络问题. 快速开始 Docker跨主机网络方案 docker 原生 overlay macvlan 第三方方案 flannel weave calico 之前介绍了Consul搭建集群,所以在此直接选用docker自带的overlay方案来做,和Consul完美结合. 环境准备 参考之前的一篇<Consul 搭建集群>准备三台虚机. ip n1 1

  • Docker跨主机容器通信overlay实现过程详解

    同样是两台服务器: 准备工作: 设置容器的主机名 consul:kv类型的存储数据库(key:value) docker01.02上: vim /etc/docker/daemon.json { "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"], 这行改了要修改自己的docker配置文件 "cluster-store": "consul://10

  • Docker跨主机网络(overlay)的实现

    一.Docker 跨主机通信 Docker跨主机网络方案包括: docker 原生的 overlay 和 macvlan. 第三方方案:常用的包括 flannel.weave 和 calico. docker 通过 libnetwork 以及 CNM 将上述各种方案与docker集成在一起. libnetwork 是 docker 容器网络库,最核心的内容是其定义的 Container Network Model (CNM),这个模型对容器网络进行了抽象,由以下三类组件组成: 1.1 Sandb

  • docker中搭建overlay 网络实验环境

    为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性.有关 VxLAN 更详细的内容可参考 CloudMan 在<每天5分钟玩转 OpenStack>中的相关章节. Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network.Endp

  • docker清理大杀器/docker的overlay文件占用磁盘太大的解决

    [看网上都是什么迁移文件的就感觉不靠谱,治标不治本啊(这不应该是一个新生代coder的样子)] du -sh* 一路查下去,发现overlay这个文件夹已经爆了. docker system prune -a 才清理了7g的空间,那个文件夹还是30g 磁盘占用路从100%下降到80%左右,这哪里行啊,再跑两天还是满! 最后大杀器来了 安装portainer docker安装教程一堆 我这里使用dokcer-compose部署的所以下面是配置 portainer: image: portainer

  • postgresql模糊匹配大杀器(推荐)

    ArteryBase-模糊匹配大杀器 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser),使用全文检索越来越方便.本文会对abase支持的like模糊匹配,全文检索,创建何种索引,如何使用进行说明.针对于各种模糊匹配均可走索引 前模糊匹配(%xxx),后模糊匹配(xxx%) 使用场景:如果简单的前模糊匹配或者后模糊匹配则可以建一个简单的btree索引. --1.后模糊匹配(xxx%) creat

  • Python自动化之定位方法大杀器xpath

    一.xpath:基本属性定位 上一篇文章讲了通过元素的id.name.class这些属性定位的用户,使用xpath方法结合元素属性也可以很准确的定位元素,如下图 于是可以用以下xpath方法定位 二.xpath:其他属性定位 在实际工作过程中,往往会遇到一个元素id.name.class属性都没有,这时候也可以通过其它属性定位到 三.xpath:标签定位 在实际工作中,还会遇到一种情况就是相同属性具有同一个名字,这时就需要通过标签筛选,定位更准一点 如果不想制定标签名称,可以用*号表示任意标签

  • 解决PostgreSQL日志信息占用磁盘过大的问题

    当PostgreSQL启用日志时,若postgresql.conf日志的相关参数还使用默认值的话磁盘很容易被撑爆.因此在启用了logging_collector参数时,需要对其它相关的参数进行调整. 系统默认参数如下 #log_destination = 'stderr' #日志格式,值为stderr, csvlog, syslog, and eventlog之一. logging_collector = on #启用日志 #log_directory = 'log' #日志文件存储目录 #lo

  • 解决python 读取npy文件太大不能完全显示的问题

    python读取npy文件时,太大不能完全显示,其解决方法 当用python读取npy文件时,会遇到npy文件太大,用print函数打印时不能完全显示,如以下情况: 解决办法 添加一行代码:np.set_printoptions(threshold = 1e6),其中threshold表示输出数组的元素数目 其结果如下: 补充:PyCharm打开大文件时提示文件过大,只显示前一小部分 使用pycharm打开一些大文件时,会出现上述提示,表明文件过大,只能以只读的方式显示前一小部分内容,这种情况显

  • 关于docker清理Overlay2占用磁盘空间的问题(亲测有效)

    使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,通过命令df -h 发现overlay占用较高.通过命令docker system prune -a 清理无用镜像.缓存.挂载数据,也没有什么改变. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收. docker 占用的空间可以通过下面的命令查看: $ docker system df prune指令默认会清除所有如下资源: 已停止的容器(container) 未被任何容器所使用

  • Docker 清理环境操作

    开始清理,需要慎重! 列出无用的卷 docker volume ls -qf dangling=true 清理无用的卷 docker volume rm $(docker volume ls -qf dangling=true) 清理无用的镜像 docker rmi $(docker images | grep '^<none>' | awk '{print $3}') 继续清理 docker system prune docker volume prune 以上足够使用,其他命令不要知道了!

  • Docker 清理的常用方法及问题

    如果你使用 docker 进行大规模开发,但是没有清理策略,那么你的磁盘马上就会被填满,当你真的必须因为产品火爆而要立即交付一些东西时,你就无法交付. 当我们在计算机中运行一个进程时,一旦这个进程完成,所有东西都会随之销毁.容器是我们现在很多人操作的基础设施.一切东西都运行在一个容器上,旨在每个容器有一个进程.当进程完成,容器就退出.但它不会自行清理. Docker 积累的东西 你需要注意这些 已经停止的容器 磁盘卷 镜像 网络 如果有足够的空间,你可能不太关心磁盘空间,但是网络也很重要.默认地

  • docker 清理缓存脚本解析

    目录 一.硬盘占用查看 1.硬盘空间查看 2.inode查看 3.Docker占用的磁盘空间查看 二.docker清理 1.删除所有已经停止的容器 2.删除所有未打标签的镜像 3.删除所有无用的volume 4.清理磁盘.删除关闭的容器.无用的数据卷和网络 三.docker命令扩展 1.停止所有运行中的容器 2.停止所有容器 3.重启所有容器 4.获取停止的容器id 5.启动所有停止的容器 6.删除所有容器 7.删除所有镜像 四.清理docker缓存脚本 一.硬盘占用查看 1.硬盘空间查看 df

  • Docker 清理命令集锦

    杀死所有正在运行的容器 复制代码 代码如下: docker kill $(docker ps -a -q) 删除所有已经停止的容器 复制代码 代码如下: docker rm $(docker ps -a -q) 删除所有未打 dangling 标签的镜像 复制代码 代码如下: docker rmi $(docker images -q -f dangling=true) 删除所有镜像 复制代码 代码如下: docker rmi $(docker images -q) 为这些命令创建别名 复制代码

随机推荐