This directory contains subirectories for building different container images. These container images are for different Linux distros that can serve as reference platforms with dependencies installed for tskit-dev project development.
These container images are enhanced to be conveniently used as "nest
containers" as used by the
cnest
and create-nest
scripts.
These are helper scripts for calling
podman
and buildah
.
You will also want to be familiar with basic podman
usage to list and remove containers and images, etc... podman
is the
replacement for docker
in RHEL 8 and Fedora. One of its benefits is it
can be run without root privilege.
Loosely speaking, using cnest
and create-nest
, enables workflows
similar to virtualenv
and conda
, but with near total isolation of the
development environment.
The image ubuntu-20.04-mspdev has been built and pushed to docker.io/castedo/tskit-nests.
create-nest
uses profile files to determine what home directoties and other
features of the host will be shared with the container. Here's an example for
basic development:
REPOSITORY=docker.io/castedo/tskit-nests
CREATE_OPTIONS="
--volume $HOME/.ssh:$HOME/.ssh
--volume $HOME/shr:$HOME/shr
--volume $HOME/Dropbox:$HOME/Dropbox
--volume $HOME/.vim:$HOME/.vim
--volume $HOME/.vimrc:$HOME/.vimrc
--volume $HOME/.gitconfig:$HOME/.gitconfig
--volume $HOME/.sudo_as_admin_successful:$HOME/.sudo_as_admin_successful
$CNEST_SHARE_NETWORK
$CNEST_X11
$CNEST_SESSION_BUS
--security-opt=label=disable
--pid=host
--cap-add=SYS_PTRACE
"
which you save as ~/.config/cnest/profiles/dev
.
Here's an example workflow. You do this once:
create-nest dev ubuntu-20.04-mspdev msp
which is analogous to creating an environment in virtualenv
or conda
.
Then when ever you want to use that container run
cnest msp
which is analogous to activating an environment in virtualenv
or conda
named msp
.