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

我试图从安装Java 8的Ubuntu 14.04构build一个基本的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 

当我运行docker build -t memyself/docker_sample . 安装Java时出现以下错误:

 myuser@mymachine:~/sandbox/workspace/docker_sample$docker build -t memyself/docker_sample . Sending build context to Docker daemon 127.1 MB Step 0 : FROM ubuntu:14.04 ---> 91e54dfb1179 Step 1 : MAINTAINER Me Myself <memyself@example.com> ---> Using cache ---> 070127f8f0e5 Step 2 : WORKDIR / ---> Using cache ---> d2c8a7633d41 Step 3 : RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && 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 ---> Running in 548fc192e112 /bin/sh: 1: add-apt-repository: not found The command '/bin/sh -c echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && 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' returned a non-zero code: 127 

任何想法我要去哪里?


更新:

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

 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问题)。

docker存储其文件的文件系统已满。 这就是为什么在解压缩下载的java代码的时候出现tar窒息的原因。

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

 Storage Driver: aufs Root Dir: /var/lib/docker/aufs 

df -h会告诉你在你的文件系统上有多less磁盘空间可用。

使用docker ps -a查找可以删除的容器,并使用docker rm -v删除它们docker rm -v-v非常重要,因为它也会删除卷)。 使用docker imagesfind不需要的图像,并用docker rmi删除它们。

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

尝试添加

 apt-get install -y software-properties-common 

得到add-apt-repository 。 在另一个RUN命令中或者在使用add-apt-repository

这可能是因为Docker.qcow2已满。

查看以下文件的大小ls -lah ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

在这个文件,这是一个稀疏的图像包含哟的Docker for Mac上有一个公开的问题。 请参阅https://github.com/docker/for-mac/issues/371

我有同样的问题,因为我不介意重build我的容器,我刚刚删除了Docker.qcow2,重新启动泊坞窗,它解决了我的问题。 特别是如果你有很多你依赖的图像,不能重build,请小心处理。