Course Computing Resources
The Container Manager service provides the NCShare community easy access to specialized software packages without installing complex software on your own computer.
Container reservations last for a semester and provide access via web browser to packages such as RStudio and JupyterLab hosted in MCNC's datacenter.
A container is a pre-built software environment that provides web browser access to software such as Jupyter or RStudio. The container is private to you and allows you to use specialized computational software without having to install it yourself. A number of courses use custom software containers for coursework so that all students are using the same software environment.
Access to these services is self-service through Container Manager for all users at NCShare participating organizations.
For Instructors
Standard course containers are provided for:
* [RStudio](https://gitlab.com/ncshare/docker-rstudio/docker-studio-ncshare) (statistics application with Rmarkdown and knitr support)
* [Pytorch](https://gitlab.com/ncshare/Pytorch-container-updaters/ncshare-pytorch) (Jupyter notebook with machine learning)
* [PyROOT](https://gitlab.com/ncshare/docker-jupyterlab/docker-jupyterlab-ncshare) (Jupyter notebook with CERN ROOT analytic package)
Students can access these containers without any additional setup, though an email to info@ncshare.org with expected enrollment is helpful so that NCShare can plan for capacity. These containers are changed infrequently, and only with great care during the semester to not disrupt users. If you expect to edit or need additional software/packages during the semester, request a custom course container.
Requesting a custom course or workshop container
Custom course containers are available to students through NCShare Container Manager along with the standard containers. The naming convention is institution-courseid
.
After setup, custom course containers are managed by the requestor as well as the institution contacts through a GitLab project set up when the container is created. In addition to private storage space for each student, course storage space is provided for the instructor to share large datasets; the course storage space is made available as a read-only volume for the student containers.
To request a new container complete and submit a request through your school point of contact at least 3 weeks prior to date needed (potentially more time will be needed at the start of the semester).
Be prepared to provide the following information:
- Institution and course ID
- Data required and estimated number of students
- Base install software (a good starting point can be a standard container noted above)
- The Gitlab account ID of anyone who will be able to update the container (this is required, account must already be created
- Any details about any custom needs for this container
- A test script (the most resource-intensive assignment is a good candidate)
After the container is setup, NCShare personnel will contact the Container maintainers specified in the request and provide a link to the Gitlab project that controls the course containers.
Tips for maintaining a custom container
- Update the readme file with the course ID, instructor, year, and estimated number of users
- Each gitlab project will come with a staging and main branch to allow the testing of the container build before deploying it to container manager
- In this process, economy of effort trumps economy of size. It’s better to have a large image that includes more software than is explicitly required than to get partway into the semester and discover you’re missing an important command or package.
Note: It’s not unusual for add-on/package/module counts to number in the dozens. With that in mind, you should break them up into multiple layers. The exact number of will vary according to the install. Any apps whose dependencies prevent them from being installed in your preferred order should be broken out into their own layer(s) and installed in the required order.
- In general, avoid installing nonrequired package dependencies.
- Make changes to the staging Dockerfile a few at a time, commit, and rebuild the image frequently, to minimize time spent tracking down problems.
- Once your Dockerfile contains all required setup and installation commands and passes the build pipeline, merge your changes into the Main branch and run the build. Once the build is successful, your new image should appear in the container manager. If it does not, contact the NCShare admin and inquire. The new container will be named according to convention Institution-CONTAINER_NAME, where CONTAINER_NAME is either a course name, or a generic container type (like jupyter or rstudio).
- Run the test exercise and work with Duke to determine resource allocations.