sebastiandaschner blog
Running Java Web Start Apps in a Docker sandbox
sunday, july 19, 2015There a various reasons why Java Web Start Apps aren’t really used anymore — mostly security based. But nevertheless sometimes you may need to run legacy application only available as JNLP file. These application can be run within a Docker container — even with GUI!
Therefore your Docker host has to have a graphical environment. If you aren’t working on Linux, this means your VM running your Docker containers needs a GUI.
This example shows how to connect your Docker container to an existing Linux X Server.
# from your favorite base image which includes the latest Java, this example uses Debian
FROM <your-java-base-image>
# xorg and sudo is needed to run X as non-root
RUN apt-get update && \
apt-get install -y xorg sudo
# run X as non-root
RUN export uid=1000 gid=1000 && \
mkdir -p /home/dockeruser && \
echo "dockeruser:x:${uid}:${gid}:Developer,,,:/home/dockeruser:/bin/bash" >> /etc/passwd && \
echo "dockeruser:x:${uid}:" >> /etc/group && \
echo "dockeruser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/dockeruser && \
chmod 0440 /etc/sudoers.d/dockeruser && \
chown ${uid}:${gid} -R /home/dockeruser
USER dockeruser
ENV HOME /home/dockeruser
To run your container you connect the X Server Unix Socket to the Docker container.
# needed to allow local X clients
xhost +local:
docker run -ti --rm -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /<directory-containing-jnlp-file>:/jnlp \
<your-container> /bin/bash
dockeruser@62ed23a5ecf8:/$ javaws jnlp/dynamictree_webstart.jnlp
After the security question your Java Web Start Application will run in the Docker container:
Found the post useful? Subscribe to my newsletter for more free content, tips and tricks on IT & Java: