carpentries-incubator / docker-introduction

Reproducible Computational Environments using Containers
https://carpentries-incubator.github.io/docker-introduction/
Other
42 stars 48 forks source link

Example of using containers in practice without volume/mount issues #131

Open jayrobwilliams opened 2 years ago

jayrobwilliams commented 2 years ago

This issue is for the episode on example containers in practice.

Teaching the intricacies of volumes and file access can distract from the core functionality of Docker, especially for audiences that just need to get Docker working for an existing software library the requires a running container to work. There are multiple R packages that require a running container, but don't require any messing with volumes:

Both of these work seamlessly in R when containers are running in the background, not requiring the user to set volume arguments. Both packages use ports to connect to a web server running in the container, so the container doesn't need to see the host file system at all.

An example can be created using one of these packages so that the student doesn't have to set volume arguments. The RSelenium package has a vignette that could probably be adapted without too much additional effort.

In addition to simplifying the material that students need to learn, this might be close to the use case of many researchers who just need to run a container to get an existing library in a language they're familiar with to work.

jcohen02 commented 2 years ago

Thanks for suggesting this additional example for the "Examples of Using Container Images in Practice" section, @jayrobwilliams.

You make a good point that many researchers have less complex use cases than some of the examples provided so I think an example that follows the more straightforward model that you point out would be a useful addition.

Looking at the page at present, one thing that I think might be a useful addition is something that highlights what features are actually showcased in each example, e.g. for the first example we might put something like: "Docker features showcased: Running containers, port forwarding, bind mounting"

This could help learners (or anyone who discovers the page looking for Docker examples) to see which example is most suitable for them if they want help with understanding how to use a specific feature. I should probably open a separate issue for that...

Are you happy to write something up based on your suggestion and open a Pull Request? Otherwise the maintainers could work on this but that possibly won't be until the next development sprint.

sstevens2 commented 2 years ago

Like the idea of including some tags for each of the examples on what they teach. The Jekyll example also uses port forwarding as is suggested in the original post here. I did get a question about how one might visualize a shiny app deployed in a container and suggested port forwarding when I taught this last week. Might also make for a fun example. Might be 2 separate PRs from this issue: 1) with the example that @jayrobwilliams suggested and 2) with the addition of labels for each of the examples.