Docker Instructions

Sign up for one account at Docker Hub:

https://hub.docker.com/signup

 

For Windows (Professional/Enterprise) and mac users, download and install the Docker Desktop here:

https://www.docker.com/products/docker-desktop

Note that during the Installation-Configuration step, DO NOT tick the option "Use Windows containers instead of Linux containers (this can be changed after installation)" 

After installed the Docker Desktop, docker will log off automatically and ask you to switch on the Hyper-V.

Then restart the computer to have the Docker Desktop running correctly.

You don't need to follow the Quick Start Steps on the Docker Hub website after you have installed the Docker Desktop correctly. 

 

For linux users install Docker follow the instructions here:

https://docs.docker.com/install/

Note: you need to have administrator access on your computer to install docker.

 

Open a terminal or command window, for Windows, open the PowerShell, and pull the image of MercuryTrunk by running this command:

"sudo docker pull haoutwente/mercurytrunk"

Check that "MercuryTrunk" is in the list of images you have, using this command:

"sudo docker images"

 

For Mac user, to setup visualization environment:

  • Install the latest XQuartz X11 server and run it: https://www.xquartz.org/
  • Activate the option ‘Allow connections from network clients’ in XQuartz Preferences -> Security tab
  • Quit and restart XQuartz to activate the setting.
  • Ensure localhost is allowed X11 forwarding by running this command line: "xhost + 127.0.0.1"
  • Then run this in command line: "sudo docker run -it -e DISPLAY=host.docker.internal:0 haoutwente/mercurytrunk"
  • If you are running system Catalina 10.15 +, the Paraview inbuilt in the container does not work properly due to the driver issue, so you need to install Paraview first and setup a shared folder for your data mapping.
  • Download and install the paraview here: https://www.paraview.org/download/, select the newest version with .dmg.

For Linux user, to setup visualization environment run these in command line:

  • sudo apt install libx11-dev libxt-dev libxres-dev libxtst-dev 
  • Then run this in the command line: "xhost +"
  • Then run the following to open the image

       "sudo docker run -it -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE haoutwente/mercurytrunk".

For Windows (Professional/Enterprise) user, to setup visualization environment:


How to set the shared folder such that the data generated in Docker container will be saved to your actual disk (slight slow down the running speed of container):

For Windows User: 

  • Go to Docker Desktop settings and select the shared drives, tick the drive D and click Apply, you might need your administrator password.
  • Create a new folder in your D volume with the name "Docker-data".
  • Then run this in PowerShell: "docker run -it -e DISPLAY=host.docker.internal:0 -v d:/Docker-data:/MercuryTrunk/MercuryBuild haoutwente/mercurytrunk".
  • Now in the container the folder "MercuryTrunk/MercuryBuild" is mapped and all the data generated there will be copied to "d:/Docker-data".

 

For Mac User: 

  • Go to Docker Desktop Preferences and select the tab "File Sharing", check if directory "/Users" is already there, if not, add it with your admin password.
  • Create a new folder somewhere in your daily directory, e.g. in your Downloads or Desktop folder with the name "Docker-data".
  • open a new terminal, type in "cd Downloads/Docker-data", then type in "pwd", this will give you the $ROUTE$ to the Docker-data, e.g. $/Users/hao/Downloads/Docker-data$.
  • Then run this in PowerShell: "sudo docker run -it -e DISPLAY=host.docker.internal:0 -v $ROUTE$:/MercuryTrunk/MercuryBuild haoutwente/mercurytrunk".
  • Now in the container, the folder "MercuryTrunk/MercuryBuild" is mapped and all the data generated there will be copied to your "Docker-data" folder.

For Linux(e.g. Ubuntu) User:

  • Create a new folder somewhere in your daily directory, e.g. type "mkdir /home/$Username$/Docker-data" in your terminal.
  • Then type in "cd /home/$Username$/Docker-data", then type "ls" to check the folder is empty.
  • Then run this in terminal: "sudo docker run -it -v /home/hao/Docker-data:/MercuryTrunk/MercuryBuild -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE haoutwente/mercurytrunk".
  • Now in the container, the folder "MercuryTrunk/MercuryBuild" is mapped and all the data generated there will be copied to your "Docker-data" folder.


If you compile the MPI version in the docker, you need to launch MPI in this way: "mpirun --allow-run-as-root -np 4 ForceLawsMPI2Test"

Otherwise it will complain and does not launch the command.

 

 

The following is for us to maintain the image to be always newest (Another option will be build up the essentials using Dockerfile and then add line by line the commands to build up the image from basic Ubuntu.

This might avoid update the source image every now and then, but for our update frequency it might not worth it anyway.)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

To save changes of the current image:

"sudo docker commit -m "MESSAGE" -a "AUTHOR_INFO" CONTAINER_ID haoutwente/mercurytrunk:latest

Then push it back to the docker hub:

"sudo docker push haoutwente/mercurytrunk"

To clean up the stopped container and untaged images:

"sudo docker system prune"