Skip to content

Latest commit

 

History

History

nests

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

"nest" container images

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.