Tutorial - Running andes in a Docker container


Docker container saves the efforts for setting up Python and installing dependent packages. A Docker container of andes is available if you prefer to use it in a container without installation.

There are excellent tutorial on the internet for getting started with Docker. For example, checkout the Docker installation guide at https://docs.docker.com/install/.

Please continue reading after installing Docker.

Getting the Docker Image

To pull the Docker image from DockerHub, run

docker pull cuihantao/andes:latest

Mounting Folders

When you run andes inside a docker, it is executed inside a container. Andes in the container only has access to files within the container.

To run andes for a file in the local file system, one needs to mount the folder containing the file to the container. Mounting is done with -v or --volume, followed by the source directory and destination directory followed by colon. The destination directory must be /andes for andes containers.

For the source folder, It is recommended to create a folder specifically for andes test cases. For example, my folder is at /Users/hcui7/notebooks (this location is specific to your system and user name).

Next, copy andes test cases into the folder. In the example, I’m using kundur_full.xlsx.

Running ANDES

To run andes using docker, run

docker run -v /Users/hcui7/notebooks:/andes cuihantao/andes run kundur_full.xlsx

where -v /Users/hcui7/notebooks:/andes does the folder mounting, cuihantao/andes is the image name, and run kundur_full.xlsx is the command and argument passed to andes within the container.

As is seen in the example, commands and arguments are passed to the container in the same way as to a local andes. For example, to enable verbose logging, run

docker run -v /Users/hcui7/notebooks:/andes cuihantao/andes -v 10 run kundur_full.xlsx

The output files will be written to the source folder in your local machine. In my example, outputs are saved to /Users/hcui7/notebooks.

Prepare and Config

The latest Andes docker image contains pre-generated numerical calls stored in /home/cui/.andes/calls.pkl. One does not need to wait for code generation.

To use a custom Config file, place the andes.rc in the folder that you are mounting. To check which config file is being used, turn on debugging messages with andes -v 10.

Make an alias - the easiest way

One might want to use a shorter command to run Andes from docker. The solution in Bash (or zsh, or others) is to create an alias command.

alias andesd='docker run -v `pwd`:/andes cuihantao/andes:latest'

Run the above command to create an alias called andesd that automatically mounts the current folder. One can add this command to the shell profile (~/.bashrc or others) to create the alias automatically upon login.

Once completed, using Andes from docker is as simple as that from the host - simply replace andes with andesd:

andesd run kundur_full.xlsx

where kundur_full.xlsx should exist in the current host folder. Note that Andes will search for the andes.rc config file in the sequence of 1) current folder, and 2) the default one in the container at /home/cui/.andes/andes.rc.