You can define a "lab" which defines either one container or a set of containers on a network. Once defined, this lab can then be instantiated in a project.
First select "Configure Labs" -
You are presented with an interface to either edit existing lab definition or create a new one -
Following are the different fields that need to be set as a part of lab definition/
Name of the lab
This must be unique to the course. This is the name which will be used later to instantiate it for a part. You can use "+" to add containers to the network. These containers sit on a docker bridge network.
For each container that is added the following fields need to be set -
Docker Image - You can use this to select one of the pre-built images or one you built yourself using the "Build Image" functionality.
Host name - This is the name that appears in the user interface to identify the machine. Also, /etc/hosts files of all the containers are modified with the IP address when the lab is started.
This name must be a valid unix hostname.
Access - This is the name of the application used to access the container. This is a part of the image definition. While today only one access method is allowed, in future the platform will allow unlimited number of accesses methods to be defined in the image and then you can select which ones you want to make available to the user.
Select "Save" to save the image.
In order to use this "lab" definition, go to the "Lab Type" selector in part definition and select "Container Lab" -
Select the name of the lab you just defined from the Lab selector -
When you "Publish" the part, the user should have the option to "Start" this lab access all the different containers via the access methods defined.
Here is the directory mapping from the Teacher file system (in Configure Workspace) to the container mount points in the Learner environment -
Here is the direcotry mapping from the Teacher file system to the container mount points accessible by the grading and submission scripts -