Wiki
Clone wikilifev-release / Using_Docker_for_LifeV
Using Docker for LifeV (under development)
Docker is an container system, which allows to preconfigure a system image and use it later. For LifeV a preconfigured image as been build and tested. The two man advantages of using Docker are that you do not need to modify your current system to install LifeV, and you do not need to compile external libraries as they are precompiled.
Install Docker
Docker is a commercial software, which can be download from the Docker store. At time of writing, there exist a free community and paid enterprise version. Choose on your needs and install Docker. Then install Docker Compose, which allows for an easier setup of the container
You should be able to run hello world example,
sudo docker run hello-world
Clone LifeV
Change directory to your source code folder and clone the relevant version of LifeV. If you are not familiar with git there is a wiki page
Building LifeV
Change in the folder you just cloned. To download the container, build LifeV and run all test just type
sudo docker-compose run lifev-build
Now you are free to get a cup of good coffee, it might take a while to finish. At the end you should see the results of all test.
Using the container
It's time to make use of the container and run it. To start up your new container type
sudo docker-compose run lifev
mpiuser@78103ed84b74:/development/source$
/development/ config_docker.sh The configuration of the dependencies configure_lifev.sh The script used to compile LifeV install/ Folder containing dependencies lifev_config_docker.sh The configuration used to compile LifeV source/ Folder with the source code source-build/ folder in which LifeV has been build
Changing the source code
The source code can be changed on the host system. So open your favorite editor and to some changes. You can leave the container running, to recompile change in the build folder and execute make
cd /development/source-build/ make -j8
Bind additional directories in the container
When starting lifeV with docker-compose only the source code folder get bind in the container. This might be insufficient as addition data for the simulation are required. To bind such additional folder in the container we can modify the start up of the container
sudo docker-compose run -l /local/path/to/directory:/path/in/the/container lifev
Use a Paraview server in the container.
Paraview (PV) is very convenient to look at the simulation results. Since LifeV is running inside the container we might not have direct access to the simulation from the host system. Here the pvserver comes to help.
First download PV, either from your host and then exposing the folder to your container (see Bind additional directories in the container) or by using wget
to download inside the container.
To run pv we need to install an opengl system, without it the pvserver will crash. To do so connect to a running lifev container as root
sudo docker exec -it -u root {containerID} /bin/bash
apt install libglu1-mesa libsm6 libxt6
Now the pvserver can be started. Start the sever in the container and start PV on the host. Then we need to do the remote connection for the host click on "File->Connect". Select "Add server" fill in the name you want to give it, the host is your containers IP. To find that one open up a terminal on your host and run
sudo docker inspect {containerId}
Known issues
Failed to configure LifeV: When CMake configures LifeV it will try to write in the source code in the directory cmake/dependencies
. Thus, the docker container needs write permission in that directory. If the directory does not exist, create it and at give write permission to all user, even so that root should be enough.
Updated