8.3. Container Execution Model

User's containerized applications are launched as part of PegasusLite jobs. PegasusLite job when starting on a remote worker node.

  1. Sets up a directory to run a user job in.

  2. Pulls in all the relevant input data, executables and the container image to that directory

  3. Optionally, loads the container from the container image file and sets up the user to run as in the container (only applicable for Docker containers)

  4. Mounts the job directory into the container as /scratch for Docker containers, while as /srv for Singularity containers.

  5. Container will run a job specific script that figures out the appropriate Pegasus worker to use in the container if not already installed, and sets up the job environment to use it, before launching the user application using pegasus-kickstart.

  6. Optionally, shuts down the container (only applicable for Docker containers)

  7. Ships out the output data to the staging site

  8. Cleans up the directory on the worker node.

The above model, allows for all credential handling required for data transfers to be handled outside the container within the PegasusLite job.