Docker and GO Competition

The competition uses Docker to execute Entrants' code against problem data sets.

Docker

For security reasons, all competitor codes are run within Docker containers. Network access is completely precluded to and from the Docker containers. Only a temporary, competitor-specific file system is mounted to allow the results of each evaluation run to be extracted from the container. At present, the use of Docker containers for code evaluation should be transparent from the competitor’s perspective. It is possible, however, that at some point in the future, specific requirements may be placed on competitor codes to facilitate their execution within Docker containers.  An Overview of Docker is available.

A Docker container with the evaluation platform environment (less any licensed software) is available for download for building and testing your executable.

To use the downloaded Docker container, extract the downloaded file, GODockerContainer.zip, and follow these steps. For a more thorough description, see the Linux binary executables section in Languages under References:

To use the GO Competition Docker container follow these steps.

  • Install docker following the installation instructions.
  • Download GODockerContainer.zip
  • Unzip the file
    • unzip GODockerContainer.zip
  • Extract the contents
    • tar -xvzf GODockerContainer.tar
  • This will create the following directories and file in the current directory
    • arpa-go-comp/
    • arpa-go-comp/data/
    • arpa-go-comp/executable/
    • arpa-go-comp/executable/MyCpp1
  • Copy one or more downloaded datasets to the data directory
  • Test with the included executable MyCPP1
    • docker run -ti --rm -v `pwd`/data:/home/arpacomp/data:ro -v `pwd`/executable:/home/arpacomp/executable -w /home/arpacomp/executable centos:centos7 ./MyCpp1 Phase_1_IEEE_14_Bus/Phase_1_IEEE_14/scenario_1
    • The -ti makes the docker run interactive so it will print the dataset name
    • You may need to run with elevated privilege using sudo
    • A solution2.txt file will be created in the executable directory that says "Hello, world!"
  • Build your executables and call them MyExe1 and MyExe2
  • Replace contents of the executable directory with your own executables
  • Run your executable against the dataset
    • docker run --rm -v `pwd`/data:/home/arpacomp/data:ro -v `pwd`/executable:/home/arpacomp/executable -w /home/arpacomp/executable centos:centos7 ./MyExe1 Phase_1_IEEE_14_Bus/Phase_1_IEEE_14/scenario_1
  • If the appropriate solution file is produced you can be confident that your executeable, stored on GitHub, will execute correctly on the evaluation platform