Docker磁盘占用大的解决步骤

本文介绍如何解决Docker环境中磁盘空间不足的问题,包括清理无用数据、查找大型日志文件并限制其大小,以及调整Docker配置来管理日志文件存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(首先,如果在docker中跑gitlab,gitlab的promethus会有问题,参见Prometheus eats disk space in /var/opt/gitlab/prometheus/data (#4166) · Issues · GitLab.org / omnibus-gitlab · GitLabicon-default.png?t=LBL2https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/4166

首先查看磁盘占用

df -h

结果显示多条如下数据

overlay  40G   40G  0G  100% /var/lib/docker/overlay2/{id}/merged

百度到了清理docker空间的方法,可用于清理一些无用的docker数据

docker system prune -a

执行之后,发现虽然清理了2个多G的数据,但是依旧无法明白为何几个微服务会占用那么多的磁盘空间,于是尝试查找系统中的大文件

 find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr # 查找"/"目录下所有大于100M的所有文件

发现/var/lib/docker/containers/{container_id}/下存在数据较大的*-json.log日志文件,百度发现这是docker容器运行的标准输入日志,遂删除之。项目中已使用-v的方式挂载项目输出日志文件,因此对容器运行日志没有了需求,研究后发现在构建参数的时候可以对标准输入日志大小数量进行限制,以减少日志文件对存储空间的占用,以下配置分别为日志文件最大容量、最大日志文件数。

docker run ...... --log-opt max-size=10m --log-opt max-file=1

也可以在docker的配置文件中进行全局修改:新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数(daemon.json参数说明:https://www.cnblogs.com/pzk7788/p/10180197.html

{
   "log-driver":"json-file",
   "log-opts": {"max-size":"10m", "max-file":"1"}
}

另外,在查找大文件的扫描结果中,可能有通过-v进行了挂载数据目录的,里面的数据可根据相应的挂载目录找到对应的容器进行清理或设置;也可能有出现许多容器产生的未通过-v挂载的目录/var/lib/docker/overlay2/{id}/merged,即文章开头通过df -h找到的文件(如果一个宿主机存在多个容器,多个容器的数据都位于宿主机的overlay(Filesystem),而且大小一致),可通过docker inspect {container}GraphDriver找到}/var/lib/docker/overlay2/{id}中的{id},进而确定容器进行清理或设置



作者:一二先生
链接:https://www.jianshu.com/p/8a3c87276e16
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

<think>好的,用户之前问过如何在Ubuntu上用snap卸载Nextcloud,现在他问的是在Armbian上安装Docker占用多少空间。这两个问题看起来都是关于系统管理和软件安装的,可能用户是在管理自己的服务器或者单板计算机,比如树莓派或者Orange Pi之类的设备。Armbian通常用于ARM架构的设备,所以用户可能是在这类硬件上搭建服务,比如家庭服务器、NAS或者IoT应用。 接下来,用户想知道安装Docker占用多少空间。需要先理解Docker在Armbian上的安装方式。通常安装Docker会涉及几个部分:Docker引擎本身、依赖包、镜像和容器等。用户可能关心的是基础安装后的磁盘占用,以及后续使用中可能增加的空间。 首先,我得回忆一下在Debian系系统上安装Docker步骤,通常是通过官方脚本或者仓库安装。Armbian基于Debian或Ubuntu,所以步骤应该类似。安装Docker引擎本身概会占用多少空间呢?可能需要查找相关数据,或者根据经验估计。比如,Docker的包小可能在几十MB到一百多MB之间,加上依赖包的话可能会更多一些。安装后的Docker服务运行时会占用一些空间,包括镜像存储、容器等,但初始安装可能不会太。 另外,用户可能担心设备的存储容量是否足够。很多ARM设备的存储可能只有16GB或者32GB,特别是使用SD卡的情况下。所以明确安装后的空间占用对用户规划存储很重要。用户可能在考虑是否在安装Docker后还有足够空间运行其他服务或应用。 还需要考虑Docker镜像和容器小差异。比如,一个基础镜像如Alpine可能只有几MB,而Ubuntu镜像可能上百MB。但用户的问题可能更关注安装Docker引擎本身的空间,而不是后续使用中的镜像和容器。不过,可能还是需要提到这些因素,让用户有全面的了解。 另外,用户可能对命令行操作比较熟悉,之前处理过snap卸载,所以可能需要给出具体的命令示例,比如用apt安装Docker步骤,以及如何查看磁盘使用情况。比如,使用df -h查看磁盘空间,或者使用docker system df来查看Docker的空间占用。 可能还需要提醒用户安装Docker的不同方式对空间的影响,比如使用官方脚本安装和通过仓库安装是否有差异。通常官方推荐的方式是通过仓库安装,这样便于后续更新和管理。 还要注意Armbian系统的架构是否支持Docker,比如是否ARMv7或ARM64,不同架构的Docker镜像和安装包可能有差异,但用户的问题主要关注空间占用,所以可能不需要深入讨论架构问题,除非安装过程中出现兼容性问题。 总结一下,回答需要包括: 1. Docker引擎和依赖的致空间占用。 2. 安装步骤的简要说明,可能影响空间的部分。 3. 后续使用中镜像和容器的空间占用情况。 4. 查看磁盘使用的方法。 5. 可能的注意事项,比如存储介质寿命(如果是SD卡),或者清理Docker数据的方法。 需要确保信息准确,可能需要查阅最新的Docker文档或实际测试安装后的空间占用,但根据经验,Docker引擎本身约100-200MB,加上依赖可能到300MB左右。镜像和容器则根据用户使用情况变化很,但初始安装后可能不会占用太多,除非立即拉取镜像。 另外,用户可能没有明确说出来的需求是,是否在资源受限的设备上运行Docker,所以可能需要建议用户定期清理不用的镜像和容器,或者使用轻量级镜像来节省空间。</think>在 Armbian 系统(基于 Debian/Ubuntu,针对 ARM 设备)中安装 Docker 的空间占用主要取决于以下因素: --- ### **1. Docker 基础安装占用** - **Docker 引擎(`docker-ce`)**:约 **100~200MB**(包含核心组件和依赖)。 - **依赖包**:如 `containerd`、`docker-buildx` 等,约占用 **50~100MB**。 - **总计**:首次安装后,基础占用通常在 **150~300MB** 左右(具体因系统版本和架构不同略有差异)。 --- ### **2. 后续使用中的空间占用** - **镜像(Images)**:每个镜像小差异较: - 基础镜像(如 Alpine)约 **5~10MB**。 - 完整镜像(如 Ubuntu)约 **50~200MB**。 - 应用镜像(如 Nginx、Redis)约 **50~150MB**。 - **容器(Containers)**:容器基于镜像创建,初始占用几乎为 0,但运行后产生的数据会逐渐增加(如日志、数据库文件等)。 --- ### **3. 安装步骤示例** 通过官方仓库安装 Docker(推荐): ```bash # 安装依赖工具 sudo apt update sudo apt install -y ca-certificates curl # 添加 Docker 官方 GPG 密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 添加仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin ``` --- ### **4. 查看 Docker 磁盘占用** - **查看 Docker占用**: ```bash sudo du -sh /var/lib/docker ``` - **查看镜像和容器详情**: ```bash docker system df ``` --- ### **5. 注意事项** 1. **存储介质**:如果 Armbian 运行在 SD 卡或 eMMC 上,建议定期清理无用镜像(`docker image prune -a`)以避免频繁写入损耗存储。 2. **轻量化方案**: - 使用 Alpine 等小体积镜像。 - 禁用不必要的 Docker 功能(如日志轮转限制)。 3. **ARM 兼容性**:确保拉取的镜像支持 ARM 架构(如 `arm64v8/nginx` 或官方多平台镜像)。 --- ### **总结** - **最低需求**:安装 Docker 至少预留 **300~500MB** 空间(基础引擎+1~2 个轻量镜像)。 - **扩展建议**:根据实际使用需求(如数据库、Web 服务等),建议系统存储不少于 **2~4GB**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值