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: