Skip to content

Working with Docker

Nathan A. Sparks edited this page Oct 30, 2016 · 29 revisions

Working with Docker

hdpm uses Docker as a tool for packaging Linux binaries for CentOS 6/7 and Ubuntu 14.04/16.04 LTS. sim-recon and its dependencies are built inside a Docker container, starting from a Linux-distribution base image, and then the relevant binaries are extracted into a tarfile. The Dockerfiles and scripts used to carry this out are located in the "docker" directory. The images resulting from these builds are publicly available at either Docker Hub or Quay. At Docker Hub, there is one repository for dependencies (sim-recon-deps) and one for an automated build of sim-recon (sim-recon). There is another sim-recon-deps repository at Quay that holds additional Linux-distribution tags. The available tags at each repository are listed below.

Installing Docker

Follow the instructions for your operating system at https://docs.docker.com/engine/installation/.

Pulling images from repositories

  1. docker pull quay.io/nathansparks/sim-recon-deps:<tag>
  • tags: centos6 and centos7
  1. docker pull nathansparks/sim-recon-deps:<tag>
  • tags: ubuntu14 and ubuntu16
  1. docker pull nathansparks/sim-recon
  • tags: latest (CentOS 6)

Running a sim-recon container

Create a more convenient (shorter) <name>:<tag> for the image by running

docker tag nathansparks/sim-recon sim-recon

The command for running a container can grow very long; it is useful to wrap it in a bash function. In the "docker" directory, there is a script called "shortcuts.sh". Make a directory to use for mounting data into a running container, and source the shortcuts script:

  • cd <path_to_hdpm>/docker && mkdir data
  • Switch to a bash shell if needed.
  • source shortcuts.sh

To run the software, precede the usual command with the bash function dock. Multi-word commands must be enclosed in quotes. Move or copy any input-data and config. files into the "data" directory for mounting. Output files will be written to this directory as well.

dock "hd_root --config=parms.config hd_rawdata_003185_000.evio"

Development of sim-recon

Docker can also be used as a tool for development of sim-recon. First, setup a directory with the source code to be developed and a Dockerfile for building it:

  • cd <path_to_hdpm>/docker/buildfiles && mkdir dev && cd dev
  • git clone https://github.com/JeffersonLab/sim-recon
  • cp -p ../centos6/Dockerfile .
  • Edit the Dockerfile to add your source code when building the image.
  • Delete or modify the MAINTAINER line.
  • Insert the following lines following the MAINTAINER or FROM line.
   USER root
   ADD sim-recon sim-recon
   RUN chown -R gx:gx sim-recon
   USER gx

Add your code to sim-recon, and then build it in a container by running

docker build -t sim-recon:dev .
Clone this wiki locally