Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker on Mac: No space left on device

Tags:

docker

java-8

I am trying to build a base Docker image from Ubuntu 14.04 that installs Java 8. Here's what I have so far:

FROM ubuntu:14.04
MAINTAINER Me Myself <[email protected]>

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

When I run docker build -t memyself/docker_sample . I get the following error installing 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 <[email protected]>
 ---> 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

Any idea where I'm going awry?


Update:

I added the apt-get install -y software-properties-common line and now I'm getting an enormous amount of output, some of which is:

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)

It is important to note that if I try to start up more than a few other images (pulled from Docker Hub) on my Mac, I get similar "No space left on device" errors. So I believe this latest problem is perhaps due to not allocating enough space for Docker on my machine (similar to a JVM OutOfMemoryException issue).

like image 612
smeeb Avatar asked Sep 24 '15 20:09

smeeb


People also ask

How do I free up space on my docker container?

A stopped container's writable layers still take up disk space. To clean this up, you can use the docker container prune command. By default, you are prompted to continue. To bypass the prompt, use the -f or --force flag.

Where is docker storage on Mac?

On a Mac, the default location for Docker images is ~/Library/Containers/com. docker. docker/Data/vms/0/. Note than on Windows and Mac, Docker runs Linux containers in a virtual environment.

Can I delete docker container from Mac?

For this, launch Activity Monitor and check all running processes on your Mac. If you find any process that has “Docker” in its name, select it and click the “X” button in the top left corner to close it. Go to the Applications folder in Finder and find and remove the Docker app to Trash.


2 Answers

Your filesystem where docker stores its files is full. That's why tar chokes when unpacking the downloaded java archieve.

docker info will show you where the files are located, e.g.

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

df -h will tell you how much disk space is available on your filesystems.

Use docker ps -a to find containers that can be deleted and remove them with docker rm -v (-v is important because it also removes volumes). Use docker images to find unneeded images and remove them with docker rmi.

You may have dangling image layers that are no longer needed. Delete them with docker rmi $(docker images -q -f dangling=true).

like image 186
Harald Albers Avatar answered Oct 17 '22 13:10

Harald Albers


try adding

apt-get install -y software-properties-common

to get add-apt-repository. Either in another RUN command or just before you use add-apt-repository.

like image 30
Robert Avatar answered Oct 17 '22 13:10

Robert