Submit a job with a Docker image

In this lesson, we are going to submit a job to run inside of a Docker image. Using a Docker image is a nice way to allow the job to have a customized execution environment, regardless of whatever software is installed on the execute node itself. There are many, many Docker images available on the public Docker Hub, and it is easy to build your own.

For example, lets imagine you have a job that needs Python 3. First lets check the version of Python on your machine:

username@learn $ python --version
Python 2.7.5

Indeed, Python 2.7.5 is all you get with Centos 7 out of the box. Now, lets submit a job that will run inside a Docker image named frolvlad/alpine-python3, which is a small image that just contains Python3. Your submit file should look like:

# Tell HTCondor to run inside a docker image 
universe = docker
docker_image = frolvlad/alpine-python3
# And now tell HTCondor what to run, what files to transfer, etc, as usual.
should_transfer_files = YES
executable = /usr/bin/python
arguments = --version
output = docker_python_version.out

After you run it, what does docker_python_version.out say?