Documentation¶
Concepts¶
Virtual Environments¶
myDocker provides its users with a variety of virtual environments (or simply environments), provided on demand; each of these virtual environments consists of a set of resources:
a user interface (e.g., Jupyter, RStudio, VSCode, XFCE-type desktop environment , SSH terminal, ...) providing access to software (e.g., Python, scikit-learn) and data
with a home directory
all of which rely on physical resources: processor (CPU, GPU), memory, disk space, etc.
When the user requests an environment:
a server is identified to host the environment
the docker image containing the environment’s software is downloaded to this server (if it is not already present);
a lightweight virtual machine (#docker container) is launched on the server;
if applicable, the user’s home directory is mounted in the virtual machine;
the user interface is started in the virtual machine and made available to the user, typically via a new web page.
Requesting an environment¶
To request an environment, the user can choose to:
select it from their dashboard if they have used it before;
open a web link (URL) in the form
https://mydocker.../join/xxxxwherexxxidentifies the environment. This link could, for example, come from this service documentation page, or be provided by a teacher via email, on the course webpage, or through a Digital Learning Environment such as Moodle;open a myDocker activity from a Digital Learning Environment like Moodle. Such an activity uses the LTI integration protocol, which allows the user’s identity and their role (student, teacher) to be transmitted to myDocker.
Persistent personal folders¶
In most virtual environments, the user has a folder to host personal documents. This folder is persistent: the user will find these documents there after shutting down and then restarting the environment. Depending on the environment, this personal folder may be dedicated to the environment or shared with other environments (global).
To allow for a wide range of uses, there is currently no imposed quota. However, this personal folder is designed for interactive use and not for long-term file storage. Therefore, there are no guarantees of backup or long-term preservation (several years).
We rely on your cooperation to allow us to maintain a liberal data policy. We reserve the right to intervene without notice to, for example, clean up easily reconstructible temporary files (typically pip cache, conda, ...) or illegal content. Or with notice for other large files.
Roles: student, teacher, administrator¶
myDocker does not differentiate between users when using virtual environments: once inside one of them, you are on a generic Linux machine with a local account, similar to a computer lab setting.
The “Teacher” role further allows the user to define and provide new images and environments via a dedicated tab on the myDocker dashboard. A user can have the Teacher role because the institution through which they authenticated indicated that they are staff and not a student, or because an administrator granted them the Teacher role.
On the interface, it is possible to switch from “Student” mode (environment user) to “Teacher” mode (environment creator) using the button at the top right, next to the interface exit.

(a)to the administrator interface

(b)to the student interface
Finally, the “Administrator” role allows for the management of users (specifically for configuring their roles).
How to organize a course using myDocker¶
If one of the preexisting environments suits you, you can simply tell your students to use it, for example by providing them with a link to the environment.
Including myDocker as an activity in Moodle/eCampus/... (coming soon)
If usage is extensive (for example, more than a hundred students using myDocker simultaneously), please contact us; we will then try to keep a closer eye on the service, especially during the first sessions. This will also allow for better planning of any potential service interruptions outside of critical periods (e.g., project deadlines). Please also contact us if you require significant physical resources (e.g., GPU, large volumes of data).
If you have specific needs (for example, a particular software or software version), you can create and share your own environment.
Alternatively, most existing environments use a package system such as pip or conda.
It is therefore possible to install new software directly from the environment. They will
typically be installed in a /conda folder where the user has write permissions. Note,
however, that this installation is not persistent (unless explicitly installed in the
user folder): the software will need to be reinstalled every time the environment is
restarted. This alternative is therefore best reserved for small software that is quick
to download and install.
Finally, we suggest several strategies below for providing educational resources to students.
How to provide resources (educational)¶
Option 1: Manual import¶
The technically simplest method, although not the most practical for students, is to make the resources available to students in their VLE (Moodle, ...)
educational resources or archives (using jupyterlab-archive) manually
Option 2: Import from a git repository¶
Option 3: Under Jupyter, with nbgitpuller¶
Option 4: With Travo¶
Assignment Management¶
How to organize assignment submissions:
manually, potentially using jupyterlab-archive
travo
Providing data (coming soon)¶
On-the-fly download
Include in the environment, typically via a context file
S3 mount (coming soon)
Real-time collaboration (coming soon)¶
At this stage, mydocker (like JupyterHub@Paris-Saclay previously) does not provide collaboration functionality in itself. This is a well-identified limitation!
That being said: for JupyterLab-based environments, it is possible to configure the environment to launch JupyterLab in collaborative mode. In this case, the user can share an invitation link so that other people can join their session, with collaborative editing as in Google Colab.
https://
The limitations are:
We have not yet had the opportunity to test this in the field
This provides full access to the user’s environment. If this environment contains, for example, folders corresponding to different courses, all these folders will be accessible.
The link is limited to the current session. Guests cannot use it to access the collaborative environment — and specifically restart it — once the session has ended.
We would like to move forward on this subject and would be very interested in supporting you if you are willing to beta test. A first example of an environment using collaboration contains a LaTeX installation for collaborative editing and real-time rendering.
Additionally, you might be interested in the assignment management tool (preparation, distribution, tracking, collection) Travo, based on GitLab, which has some simple asynchronous collaboration features.