docker - 无法运行 docker commit,空间不足
问题描述
所以我对 docker 还很陌生,仍然试图理解一些基本的东西。目前,我有两个泊坞窗图像:
[root:kali:~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kalilinux/kali-linux-docker latest 5e4d6c84829d About an hour ago 9.57GB
kalilinux/kali-linux-docker <none> f26f3ae90aee 2 months ago 1.57GB
无论出于何种原因,带有latest
标签的第一个是另一个的孩子。假设带有latest
标签的容器是我提交更改的容器。
但是,现在我正在尝试提交/保存对此图像的更改,但出现以下错误:
来自守护程序的错误响应:处理 tar 文件时出错(退出状态 1):写入 /usr/lib/x86_64-linux-gnu/libclang-7.so.1:设备上没有剩余空间
我检查了我的磁盘空间,看起来我有 4GB 可用:
[root:kali:~]# df -h
Filesystem Size Used Avail Use% Mounted on
udev 481M 0 481M 0% /dev
tmpfs 99M 944K 98M 1% /run
/dev/vda1 25G 20G 4.1G 83% /
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
/dev/loop0 88M 88M 0 100% /snap/core/5662
/dev/loop1 67M 67M 0 100% /snap/lxd/9239
tmpfs 99M 0 99M 0% /run/user/0
overlay 25G 20G 4.1G 83% /var/lib/docker/overlay2/b2178e65852a017f21124a23d63e32a66faaa8b8375429865e8433da9fc0db20/merged
shm 64M 0 64M 0% /var/lib/docker/containers/af2d2ed99d91d2247f550a23af988ce4a624e186ac80782046f0868418547d3d/mounts/shm
/dev/loop2 90M 90M 0 100% /snap/core/6130
/dev/loop3 52M 52M 0 100% /snap/lxd/9795
所以这是我的问题:
- 有什么方法可以合并我的两个图像,这样我就不会得到一堆子图像?
- 该
docker commit
命令实际上是在尝试制作容器的副本吗?还是只是简单地保存它?我提出这个问题的原因是因为我只剩下 4GB 了,但是我的图像完全符合我的要求,那为什么不能保存呢?每次我运行提交时是否需要额外的 9GB 空间?
如果我能提供帮助,尽量避免关闭 VPS 并增加其磁盘空间。
谢谢你的帮助。
解决方案
据我所知,没有办法合并图像,但可以删除它们。每次提交都会增加图像的大小。您可以通过以下方式查看图像的图层及其大小:
docker history <image name>
您可以使用 Dockerfile 并从头开始构建您想要使用的图像,而不是使用旧图像。构建有时需要更长的时间,但您应该找到一种以自动化方式构建图像的方法,以便能够重复它们以供生产使用。如果您从头开始构建图像,并使用一些经过验证的图像,您将免费获得新的修补版本。在 Dockerfile 中,您最多可以有 125 层,这意味着您应该尽可能少地使用 RUN 命令,并使用 linux/unix 表示法将它们链接起来,例如
RUN apt-get update -y && apt-get install -y \
ansible \
openssh-client \
vim \
wget
推荐阅读
- mips - 将 C 代码转换为 MIPS 求幂的递归问题
- javascript - 在html中包含城市和温度数据
- python - 名称实体识别在 Python 中无法正确识别多个单词
- python - 匹配字符串列表中的多个子字符串
- python-3.x - 双素数 Python 程序
- c - 我正在尝试使用 c 语言中的 switch 语句创建时间转换器,但它不起作用
- scala - Kafka 消费者的主题和分区发现
- c++ - QML标签膨胀背景矩形
- java - 使用 EclipseLink 进行持久性的 Maven 项目在 IDE 上运行,但从构建的 jar 运行时失败
- tensorflow - Keras:ValueError:输入 0 与层 lstm_1 不兼容:预期 ndim=3,发现 ndim=2