Skip to content

Ready-to-run Docker images containing pyiron applications

License

Notifications You must be signed in to change notification settings

pyiron/docker-stacks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e8aca29 · Nov 25, 2024
Nov 13, 2023
Oct 21, 2024
Nov 25, 2024
Apr 27, 2021
Aug 26, 2024
Nov 11, 2024
Nov 25, 2024
Nov 25, 2024
Nov 4, 2024
Aug 26, 2024
Oct 15, 2020
Oct 15, 2020
Feb 13, 2024
Nov 25, 2024

Repository files navigation

Docker Stacks

Docker Testing Binder

Here, you find the necessary files for building various pyiron docker images. All of these images can be pulled from docker-hub. We provide following flavors based on the main pyiron modules:

Image Name Derived From Additional Dependencies Pull Command
pyiron/base jupyter/base-notebook pyiron_base docker pull pyiron/base
pyiron/md pyiron/base LAMMPS, pyiron, NGLview docker pull pyiron/md
pyiron/pyiron pyiron/md SPHInX, GPAW docker pull pyiron/pyiron
pyiron/experimental pyiron/base TEMMETA, pyprismatic, match-series, pyxem, pystem docker pull pyiron/experimental
pyiron/continuum pyiron/md damask, sqsgenerator, fenics docker pull pyiron/continuum
pyiron/potentialworkshop pyiron/pyiron atomicrex, calphy, pyiron_contrib, pyiron_gpl, python-ace, runner docker pull pyiron/potentialworkshop
pyiron/mpie_cmti pyiron/pyiron atomicrex, calphy, fitsnap, pyiron_contrib, pyiron_gpl, pyiron_gui, pyiron_workflow, python-ace, pytorch, runner, tensorflow docker pull pyiron/mpie_cmti

By deriving the images from each other the size of Docker layers is reduced to a minimum. The images also include some example notebooks to get you started.

Execute Docker Container

Running one of these container and spawning a Jupyter server from within will provide you with a ready-to-start environment for using pyiron. If you like a simple Jupyter notebook, run

docker run -i -t -p 8888:8888 <image name> /bin/bash -c "source /opt/conda/bin/activate; jupyter notebook --notebook-dir=/home/jovyan/ --ip='*' --port=8888"

replace <image_name> with respective image you want to use, e.g. pyiron/md. If you prefer to use Jupyter lab, run

docker run -i -t -p 8888:8888 <image_name> /bin/bash -c "source /opt/conda/bin/activate; jupyter lab --notebook-dir=/home/jovyan/ --ip='*' --port=8888"

These commands do a number of things:

  • docker run <image_name> spawns a container based on image <image_name>. In case the image isn't already on your system, it will be downloaded. Also, if not further specified, the latest tag will be assumed and outdated local versions may be updated.
  • -i -t: the container is spanwed in "interactive mode" by allocating a pseudo-tty (-t).
  • -p 8888:8888: port 8888 of the container instance is forwarded to port 8888 of the host.
  • <image name>: the image's name.
  • /bin/bash: inside the container, a bash shell is started.
  • -c "source /opt/conda/bin/activate; jupyter notebook --notebook-dir=/home/jovyan/ --ip='*' --port=8888": the shell executes the command inside the quotation marks:
    • source /opt/conda/bin/activate: activate the conda environment
    • jupyter notebook or jupyter lab: start a Jupyter server running a notebbok/lab. Do this in the user's (jovyan) home-directory (--notebook-dir=/home/jovyan/) and allow connections from any IP address (--ip='*') on port 8888 (--port=8888) which is connected to the outside.

Data Persistence

In case you want to keep data you worked on/created while using the container, it may be convenient to mount a local directory into the home directory of the docker container by adding -v <local_path>:/home/jovyan/ to the docker run command:

docker run -i -t  -v <local_path>:/home/jovyan/ -p 8888:8888 <image_name> /bin/bash -c "source /opt/conda/bin/activate; jupyter notebook --notebook-dir=/home/jovyan/ --ip='*' --port=8888"