Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac上的Docker:设备上没有剩余空间_Docker_Java 8 - Fatal编程技术网

Mac上的Docker:设备上没有剩余空间

Mac上的Docker:设备上没有剩余空间,docker,java-8,Docker,Java 8,我正试图从安装Java8的Ubuntu14.04构建一个基本Docker映像。以下是我目前掌握的情况: FROM ubuntu:14.04 MAINTAINER Me Myself <memyself@example.com> WORKDIR / RUN \ echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections &&a

我正试图从安装Java8的Ubuntu14.04构建一个基本Docker映像。以下是我目前掌握的情况:

FROM ubuntu:14.04
MAINTAINER Me Myself <memyself@example.com>

WORKDIR /

RUN \
    echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
    apt-get install -y software-properties-common && \
    add-apt-repository -y ppa:webupd8team/java && \
    apt-get update && \
    apt-get install -y oracle-java8-installer && \
    rm -rf /var/lib/apt/lists/* && \
    rm -rf /var/cache/oracle-jdk8-installer
知道我哪里出错了吗


更新: 我添加了
apt get install-y software properties common
行,现在我得到了大量的输出,其中一些是:

162816K ........ ........ ........ ........ ........ ........ 93% 3.92M 2s
165888K ........ ........ ........ ........ ........ ........ 95% 5.43M 1s
168960K ........ ........ ........ ........ ........ ........ 97% 6.35M 1s
172032K ........ ........ ........ ........ ........ ........ 98% 6.09M 0s
175104K ........ ........ ........ .....                     100% 5.27M=32s

2015-09-25 15:33:33 (5.43 MB/s) - 'jdk-8u60-linux-x64.tar.gz' saved [181238643/181238643]

Download done.
Removing outdated cached downloads...
tar: jdk1.8.0_60/jre/lib/charsets.jar: Wrote only 3072 of 10240 bytes
tar: jdk1.8.0_60/jre/lib/jce.jar: Cannot write: No space left on device
tar: jdk1.8.0_60/jre/lib/amd64/libbci.so: Cannot write: No space left on device
tar: jdk1.8.0_60/jre/lib/amd64/libjavafx_font_freetype.so: Cannot write: No space left on device
tar: jdk1.8.0_60/jre/lib/amd64/libawt_headless.so: Cannot write: No space left on device
tar: jdk1.8.0_60/jre/lib/amd64/libdt_socket.so: Cannot write: No space left on device
tar: jdk1.8.0_60/jre/lib/amd64/libmlib_image.so: Cannot write: No space left on device
...Huge amount of output omitted for brevity...
tar: jdk1.8.0_60/bin/jvisualvm: Cannot write: No space left on device
tar: jdk1.8.0_60/bin/jcontrol: Cannot write: No space left on device
tar: jdk1.8.0_60/release: Cannot write: No space left on device
tar: Exiting with failure status due to previous errors
cannot unpack jdk8
Oracle JDK 8 is NOT installed.
debconf: DbDriver "config": could not write /var/cache/debconf/config.dat-new: No space left on device
dpkg: error processing package oracle-java8-installer (--configure):
    subprocess installed post-installation script returned error exit status 1
Setting up gsfonts (1:8.11+urwcyr1.0.7~pre44-4.2ubuntu1) ...
dpkg: unrecoverable fatal error, aborting:
    unable to flush /var/lib/dpkg/updates/tmp.i after padding: No space left on device
E: Sub-process /usr/bin/dpkg returned an error code (2)
需要注意的是,如果我尝试在Mac上启动多个其他映像(从Docker Hub提取),我会遇到类似的“设备上没有剩余空间”错误。因此,我认为最新的问题可能是因为没有在我的机器上为Docker分配足够的空间(类似于JVM
OutOfMemoryException
问题).

尝试添加

apt-get install -y software-properties-common

要获取
添加apt存储库
。在另一个
运行
命令中,或者在使用
添加apt存储库
之前,docker存储其文件的文件系统已满。这就是为什么解压缩下载的java archieve时tar会阻塞的原因

docker info
将显示文件的位置,例如

Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
df-h
将告诉您文件系统上有多少可用磁盘空间

使用
docker ps-a
查找可以删除的容器,并使用
docker rm-v
将其删除(
-v
很重要,因为它还可以删除卷)。 使用
docker images
查找不需要的图像,并使用
docker rmi
将其删除


您可能不再需要悬挂的图像层。用docker rmi$(docker images-q-f dangling=true)删除它们。

这可能是因为docker.qcow2已满

检查以下文件的大小

ls-lah~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/docker.qcow2

docker for mac上有一个与此文件相关的公开问题,该文件是一个包含yo的稀疏图像。看


我也有同样的问题,因为我不介意重建我的容器,我只是删除了Docker.qcow2,重新启动了Docker,它解决了我的问题。处理时要特别小心,尤其是当您有大量依赖的图像且无法重建时。

或手动添加回购。我不知道这是否仍然是真的,但这曾经带来了一堆python垃圾。谢谢@Robert(+1)-请查看我的更新,有什么想法吗?再次感谢!我想总的来说,我只是有点吃惊,没有一个标准的Ubuntu 14.04和JRE 8 Docker映像…@smeeb官方的Java Docker映像是基于Debian的。离Ubuntu足够近了。请参阅:@smeeb看起来不再需要
python软件属性
,但您还应该添加
-y
标志。我已经更新了我的答案。如果您还没有看到关于增加磁盘大小的文档,请检查您的虚拟机中是否有足够的空间。您可以通过ssh通过
docker机器ssh
进入vm。如果您使用默认安装的docker toolbox,您的机器名将为
default
。当您在机器中时,可以调用
df-h
。相关输出是以
/dev/sda1/
开头的行。如果
Use%
列中的值接近100,则表示虚拟磁盘已满。在这种情况下,您可以开始删除容器和映像,或者增加磁盘大小。请报告您的发现。自Docker 1.9.0以来,还有一个用于删除未使用卷的api。您可以使用
docker volume ls--filter-dangling=true
找到它们,并使用
docker volume rm$(docker volume ls--filter-dangling=true-q)
docker 1.13.0添加了用于内务管理的专用命令来删除它们。您可以发出
docker image prune
docker volume prune
来删除未使用的(“悬空”)图像和卷。还有
docker系统prune
,它删除停止的容器、未使用的卷、未使用的网络和悬空的图像。新命令要求在实际删除任何内容之前进行确认。我的计算机上不存在此文件。我有一个沉重的
库/Containers/com.docker.docker/Data/vms/0/docker.raw
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs