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?
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).
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.
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.
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.
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)
.
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With