我只是想导出我拥有的Docker映像,以便可以将其推送到另一个系统;但是,由于没有空间,我什至无法保存它:
$ docker save mycustomimage:latest -o nessus.tar
Error response from daemon: write /var/lib/docker/tmp/docker-export-255300778/f2881cc25962de53a9f4efdbf759e88c86bd183abf773477ebbd5ddebc229ae8/layer.tar: no space left on device
但是,如果我运行df -h
,则可以确认我有超过150GB的可用空间:
$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 466Gi 275Gi 182Gi 61% 1290334 9223372036853485473 0% /
devfs 374Ki 374Ki 0Bi 100% 1296 0 100% /dev
/dev/disk1s4 466Gi 8.0Gi 182Gi 5% 8 9223372036854775799 0% /private/var/vm
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
drivefs 466Gi 292Gi 173Gi 63% 18446744069414640546 4294967295 32808793364899312% /Volumes/GoogleDrive
这是图像列表:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mycustomimage/kali latest a1f226987b86 12 hours ago 33GB
mycustomimage/kali <none> ac3292dcbd65 4 months ago 25.1GB
mycustomimage/kali <none> 8a628403a803 6 months ago 12GB
我什至不确定这些图像是否全部合并为33GB,或者33GB只是最后一张图像的文件大小。这只是一个简单的Kali Linux码头工人,上面有一个自定义工具,其空间约为5GB。我非常确定,如果此映像的大小为70GB,则它比安装了更多内容的VM更大。
对于这里发生的事情非常困惑。任何帮助将不胜感激!
答案 0 :(得分:2)
您的df -h
输出与我希望在Mac上看到的 输出相对应,这意味着您的linux容器未在运行df -h
的系统上运行
如果您正在运行适用于Mac的Docker桌面,则您的Docker守护程序将在hyperkit虚拟机中运行,该虚拟机由鲸鱼图标Docker.app应用程序在后台进行管理。该虚拟机包括一个大小有限的虚拟磁盘。该磁盘映像的最小可配置磁盘大小为16GB。要查看您的鲸鱼图标docker桌面托管虚拟机有多少空间,请单击鲸鱼图标,然后选择“首选项”。在“磁盘”选项卡下,您将看到磁盘有多大以及占用了多少空间(由于压缩)。
运行docker save
命令时,守护程序将在错误输出/var/lib/docker/tmp/...
中引用的位置创建一个.tar。由于虚拟机的磁盘没有足够的空间来存放该临时的.tar文件,因此会出现磁盘空间不足错误。
要查看虚拟机可用的真实空间量,请运行以下命令:
docker run --rm -it -v /var/lib/docker/tmp:/r alpine df -h /r
可以增加磁盘映像可用的空间量,但是请记住,即使从磁盘映像上的文件系统中删除了大文件,这也会占用硬盘驱动器上的实际空间。 / p>
tldr;您在虚拟机中运行的docker可用空间少于主机显示为可用的空间。
答案 1 :(得分:0)
我修剪了一些图像和容器,然后它起作用了。
int width = 100;
String s = "129018";
CharSequence padded = IntStream.range(0,width)
.parallel()
.map(i->i-(width-s.length()))
.map(i->i<0 ? '0' :s.charAt(i))
.collect(StringBuilder::new, (sb,c)-> sb.append((char)c), (sb1,sb2)->sb1.append(sb2));
和
docker image prune