You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

1.1. Introduction

Containerization is a method to isolate computing environment (operating system, data, software, configurations, etc.) into reusable packages called images. These are binary files which can easily be transferred between different machines. Images are instantiated into running Containers by a Container Engine. From user perspective, working with the Container is similar to working with another operating system on the shared hardware resources. This resembles what Virtual Machines provide. However, there are important technical differences between Container and Virtual Machine technologies. Mainly, any number of Containers can be executed by a single Container Engine on a single operating system. In case of Virtual Machines, each runs its own operating system with its own layer of hardware abstraction. In consequence, Containers are in general quicker to start and easier to operate.

1.2. Docker

The main Containerization technology used now is Docker. It consists of image file format description, the Container Engine and other components. It is available for Linux, macOS and Windows.

For more information, check Get Started

1.3. uDocker

uDocker is "a basic user tool to execute simple docker containers in user space without requiring root privileges".

For more information, check indigo-dc/udocker

1.4. Goal

The goal of IMAS Docker creation is to prepare a Docker image containing full IMAS environment with additional tools such as Kepler and FC2K.

1.5. Latest IMAS Docker image

  • IMAS version: 3.20.0
  • UAL version: 3.8.3
  • Kepler present
  • FC2K not present yet
  • Available on the Gateway: ~g2tomz/public/imas-installer-20180921112143.tar.xz

1.6. Preparing uDocker on Gateway

mkdir -p ~/.local/bin $ITMWORK/dot-udocker
ln -s $ITMWORK/dot-udocker ~/.udocker
curl https://raw.githubusercontent.com/indigo-dc/udocker/master/udocker.py > ~/.local/bin/udocker
chmod u+rx ~/.local/bin/udocker
echo "tmpdir='$ITMSCRATCH'" > ~/.udocker/udocker.conf
~/.local/bin/udocker install

1.7. Loading Docker image

  • Docker:

    xzcat ~g2tomz/public/imas-installer-20180921112143.tar.xz | docker load
  • uDocker on Gateway:

    xzcat ~g2tomz/public/imas-installer-20180921112143.tar.xz | ~/.local/bin/udocker load

1.8. Demonstration 1: Python script

  • Start a new Docker container

    docker run --interactive --tty --name imas imas-installer
  • In the container shell, execute:

    module load imas
    imasdb test
    python /home/imas/imas-installer/src/$IMAS_VERSION/ual/$UAL_VERSION/examples/dd-v3/python/put_pf.py
  • On the host machine, execute:

    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_120001.characteristics /tmp/
    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_120001.datafile /tmp/
    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_120001.tree /tmp/
  • Transfer the generated IDSes to the Gateway:

    scp /tmp/ids_120001.* login.eufus.eu:public/imasdb/test/3/0/

1.9. Demonstration 2: Kepler workflow

 

  • Start a new Docker container

    docker run --interactive --tty --name imas imas-installer
  • In the container shell, execute:

    module load imas kepler
    module load keplerdir
    imasdb test
    export USER=imas
    kepler -runwf -nogui -user imas /home/imas/simple-workflow.xml
  • On the host machine, execute:

    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_10001.characteristics /tmp/
    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_10001.datafile /tmp/
    docker cp imas:/home/imas/public/imasdb/test/3/0/ids_10001.tree /tmp/
  • Transfer the generated IDSes to the Gateway:

    scp /tmp/ids_10001.* login.eufus.eu:public/imasdb/test/3/0/

a basic user tool to execute simple docker containers in user space without requiring root privileges

  • No labels