====== Running PyLith in a portable, Linux environment via Docker ====== **See the PyLith User Manual (v2.2.0) for the latest instructions.** The instructions here do not include how to use applications with graphical-user interfaces within the container. ===== What is Docker? ===== From https://www.docker.com/what-docker: > "Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment. > > LIGHTWEIGHT > > Containers running on a single machine share the same operating system kernel; they start instantly and use less RAM. Images are constructed from layered filesystems and share common files, making disk usage and image downloads much more efficient." ===== Setup (first time only) ===== ==== Install Docker ==== https://www.docker.com/products/docker ==== Create container to store persistent user data ==== This container, called pylith-data, will hold a directory where all your user data can be stored for use with PyLith within Docker. The data can persist for different versions of PyLith; that is, you can update to a newer version of PyLith and your user data will still be available. This directory is not directly accessible from your host computer. However, you can copy files to/from your host filesystem using "docker cp" (see below). $ docker create --name pylith-data geodynamics/pylith-data ===== Run Unix shell within Docker to use PyLith. ===== $ docker run -ti --volumes-from pylith-data geodynamics/pylith **HINT**: Within the container, you will probably want to copy the examples from the pylith-VERSION directory to the data directory, which is the persistent storage. $ cp -R ~/pylith-VERSION/examples ~/data * To "pause" the container. ''Control-p Control-q'' * To attach to a "paused" or "running" container. - Get container id ''$ docker ps'' - Attach to container ''$ docker attach CONTAINER_ID'' ==== Troubleshooting ==== docker: Error response from daemon: oci runtime error: process_linux.go:330: running prestart hook 0 caused "fork/exec /usr/bin/dockerd (deleted): no such file or directory: ". * Restart docker. ''$ sudo service docker restart'' * Run docker image. ''$ docker run -ti --volumes-from pylith-data geodynamics/pylith'' ===== Copy data to/from persistent storage volume. ===== These commands are run on the local host outside the container, not inside the Docker container. * Copy data FROM persistent storage volume TO local host $ docker cp pylith-data:/data/pylith-user/PATH/FILENAME LOCAL_PATH * Copy data FROM local host TO persistent storage volume $ docker cp LOCAL_PATH pylith-data:/data/pylith-user/PATH/ ===== Docker Quick Reference ===== * List local docker images ''$ docker images'' * List all docker containers ''$ docker ps -a'' * List running docker containers ''$ docker ps'' * Remove docker container ''$ docker rm CONTAINER_ID'' * Remove docker image ''$ docker rmi IMAGE_ID''