Containers Introduction
While Cauldron works great for local Python environments, it was designed to
for containerized workflows in both interactive and non-interactive (running
in production) modes. To ease working with containers, there are a number of
pre-built Docker containers that you can use either directly or as a base
image to customize for your needs. They are all located in the docker hub
repository at:
Images come in 3 flavors of Python:
And there are two types of images that can be used that come in all three of the above
flavors:
1. UI (User-Interface) Images
These are images that run the Cauldron user-interface, which can be used
without having to run Cauldron from a local Python installation. The three
possible images that will always have the latest version of Cauldron are:
swernst/cauldron:current-ui-standard
swernst/cauldron:current-ui-conda
swernst/cauldron:current-ui-miniconda
Or for cases where you want to pin to a specific Cauldron version the
current
can be replaced with a version,
e.g. swernst/cauldron:1.0.0-ui-standard
.
To use these containers, one can be start a command such as this:
$ docker run --rm -it \
-v /path/to/notebooks:/notebooks \
-p 8899:8899 \
swernst/cauldron:current-ui-standard
--rm
to cleanup the container once it is finished running,
-it
to show the interactive output of the container while it is running,
-v /path/to/notebooks:/notebooks
to mount the local notebook files into the container so that the container
has access to the notebook files when running.
-p 8899:8899
to connect the container port 8899 to the local host port 8899 so that the
UI running in the container is accessible from the local host system. A different
local port can be used by changing the first port argument in the above command
if needed (for example running multiple UI containers on the same local host).
The UI can be loaded in the browser athttp://127.0.0.1:8899
after the container has started running.
2. Remote Kernel Images
These are images that run the Cauldron remote kernel, which can be used for Cauldron
execution on remote systems. A good example of this would be running Cauldron on a
cloud server. In this case the container is not located on the same system as the
notebook files and display. The three possible images that will always have the latest
version of Cauldron are:
swernst/cauldron:current-standard
swernst/cauldron:current-conda
swernst/cauldron:current-miniconda
Or for cases where you want to pin to a specific Cauldron version the
current
can be replaced with a version,
e.g. swernst/cauldron:1.0.0-standard
.
Starting a kernel container would look something like:
$ docker run --rm -it \
-p 5010:5010 \
swernst/cauldron:current-standard
--rm
to cleanup the container once it is finished running,
-it
to show the interactive output of the container while it is running,
-p 5010:5010
to connect the container port 5010 to the remote host port 5010 so that the
kernel inside the container is accessible to the remote host system. A different
host port can be used by changing the first port argument in the above command
if needed (for example running multiple kernels on the same remote host).