【举栗子】Docker 容器磁盘占满的几种情况 | CSDN博文精选

戳蓝字“CSDN云计算”关注我们哦!
640?wx_fmt=jpeg
作者 |  isea533
转自 | CSDN博客
责编 | 阿秃

参考文档:
https://docs.docker.com/engine/reference/commandline/dockerd/
应用日志过多

默认情况下,每个 Docker 容器都有 10G 的存储空间,当超出该大小时,容器就会出现问题。

可以参考官方文档 dm.basesize 参数的说明来修改默认的容器大小:

指定创建基本设备时要使用的大小,这会限制图像和容器的大小。 默认值为10G。 请注意,精简设备本质上是“稀疏的”,因此大多数空的10G设备不会在池上使用10 GB的空间。 但是,文件系统将为空盒使用更多空间,设备越大。

可以在守护进程重启时增加基本设备大小,这将允许所有未来的图像和容器(基于这些新图像)具有新的基本设备大小。

例子:

$ sudo dockerd --storage-opt dm.basesize=50G

这将使基本设备大小增加到50G。 如果现有基本设备大小大于50G,Docker守护程序将抛出错误。 用户可以使用此选项扩展基本设备大小,但不允许缩小。

此值会影响系统范围的“基本”空文件系统,该文件系统可能已被拉出的图像初始化和继承。 通常,更改此值需要执行其他步骤:

$ sudo service docker stop$ sudo rm -rf /var/lib/docker$ sudo service docker start

我在这里遇到的问题是因为某个模块会在 10 分钟内输出 1G 的日志,修改日志策略后可以解决该问题。

Dockerd 日志过多

有一个 GitLab 的 docker 服务,运行几个月后就会出现无法 push 和 pull 的情况,原因都是因为 /var/lib/docker 磁盘空间已满导致的。 而导致磁盘空间占满的原因是因为 dockerd 的日志占用了十几G的空间导致的。

日志文件的路径形如:	
/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log

参考:https://stackoverflow.com/questions/31829587/docker-container-logs-taking-all-my-disk-space

可以参考如下几种解决方案:

1. 启动容器参数

参考: https://docs.docker.com/engine/reference/commandline/run/
使用 --log-opt Log driver options 配置日志策略。
例如: --log-opt max-size=50m。

2. 全局默认配置

在 daemon.json 中配置,linux 中默认位置为 /etc/docker。

配置示例:
{	
  "log-driver": "json-file",	
  "log-opts": {	
    "max-size": "10m",	
    "max-file": "3",	
    "labels": "production_status",	
    "env": "os,customer"	
  }	
}

日志配置参考:	
https://docs.docker.com/config/containers/logging/configure/

完整daemon.json 示例参考:https://docs.docker.com/engine/reference/commandline/dockerd/

{	
  "authorization-plugins": [],	
  "data-root": "",	
  "dns": [],	
  "dns-opts": [],	
  "dns-search": [],	
  "exec-opts": [],	
  "exec-root": "",	
  "experimental": false,	
  "features": {},	
  "storage-driver": "",	
  "storage-opts": [],	
  "labels": [],	
  "live-restore": true,	
  "log-driver": "json-file",	
  "log-opts": {	
    "max-size": "10m",	
    "max-file":"5",	
    "labels": "somelabel",	
    "env": "os,customer"	
  },	
  "mtu": 0,	
  "pidfile": "",	
  "cluster-store": "",	
  "cluster-store-opts": {},	
  "cluster-advertise": "",	
  "max-concurrent-downloads": 3,	
  "max-concurrent-uploads": 5,	
  "default-shm-size": "64M",	
  "shutdown-timeout": 15,	
  "debug": true,	
  "hosts": [],	
  "log-level": "",	
  "tls": true,	
  "tlsverify": true,	
  "tlscacert": "",	
  "tlscert": "",	
  "tlskey": "",	
  "swarm-default-advertise-addr": "",	
  "api-cors-header": "",	
  "selinux-enabled": false,	
  "userns-remap": "",	
  "group": "",	
  "cgroup-parent": "",	
  "default-ulimits": {	
    "nofile": {	
      "Name": "nofile",	
      "Hard": 64000,	
      "Soft": 64000	
    }	
  },	
  "init": false,	
  "init-path": "/usr/libexec/docker-init",	
  "ipv6": false,	
  "iptables": false,	
  "ip-forward": false,	
  "ip-masq": false,	
  "userland-proxy": false,	
  "userland-proxy-path": "/usr/libexec/docker-proxy",	
  "ip": "0.0.0.0",	
  "bridge": "",	
  "bip": "",	
  "fixed-cidr": "",	
  "fixed-cidr-v6": "",	
  "default-gateway": "",	
  "default-gateway-v6": "",	
  "icc": false,	
  "raw-logs": false,	
  "allow-nondistributable-artifacts": [],	
  "registry-mirrors": [],	
  "seccomp-profile": "",	
  "insecure-registries": [],	
  "no-new-privileges": false,	
  "default-runtime": "runc",	
  "oom-score-adjust": -500,	
  "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],	
  "runtimes": {	
    "cc-runtime": {	
      "path": "/usr/bin/cc-runtime"	
    },	
    "custom": {	
      "path": "/usr/local/bin/my-runc-replacement",	
      "runtimeArgs": [	
        "--debug"	
      ]	
    }	
  },	
  "default-address-pools":[{"base":"172.80.0.0/16","size":24},	
  {"base":"172.90.0.0/16","size":24}]	
}

配置参数后需要重启 docker 服务。

docker-compose 配置参考:	
https://docs.docker.com/compose/compose-file/compose-file-v2/

配置示例:

logging:	
  options:	
    max-size: '12m'	
    max-file: '5'	
  driver: json-file

640?wx_fmt=png

???扫描下方二维码,阅读原文哟。

640?wx_fmt=jpeg

福利
扫描添加小编微信,备注“ 姓名+公司职位 ”,入驻【CSDN博客】,加入【 云计算学习交流群 】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:






真香,朕在看了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值