An example docker image is available that allows you to access ATLAS software over a local installation of CVMFS. To download the image do:
docker pull atlas/atlas_external_cvmfs
Then run a docker container with that image with the following command:
docker run -i -t -v /cvmfs:/cvmfs -v $HOME:$HOME atlas/atlas_external_cvmfs
Important: refer to the configuration sections for Mac and Ubuntu for arguments to
docker run
which are specific to these platforms.
Once the container is running, you will be presented with a prompt where you can setup atlas software as usual:
-bash-4.1$ setupATLAS
-bash-4.1$ asetup master,latest,Athena,gcc62
Using Athena/22.0.1 [cmake] with platform x86_64-slc6-gcc62-opt
at /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2018-05-13T2052
You can now start a ROOT session or run a test job in the container:
mkdir run && cd run
Reco_tf.py --AMI q431 --outputESDFile myESD
You can checkout Athena code from Git and compile it in the docker container. Clone the Athena git repository via https:
git clone https://[YOUR_USER_NAME]@gitlab.cern.ch/[YOUR_USER_NAME]/athena.git
Alternatively, you can use Kerberos authentication:
kinit yourlxplususername@CERN.CH
git clone https://:@gitlab.cern.ch:8443/yourlxplususername/athena.git
Then you can develop code as you would normally do in lxplus. You can find a full Git tutorial in ATLAS Software Git Workflow. Instructions for saving your changes to an image are found in Save a Docker image.
Docker images with a complete ATLAS offline installation can be readily produced
using a Dockerfile
, which constitutes a set of sequential instructions for the
docker build
command. An example Dockerfile to build a full Athena release can
be found in the docker
git repository available at
gitlab.cern.ch/atlas-sit/docker. To
build the image follow the steps outlined below:
git clone https://:@gitlab.cern.ch:8443/atlas-sit/docker.git
slc6-athena
and build the
image of an official release:
docker build -t athena:21.0.38 --build-arg RELEASE=21.0.38 .
The period at the end instructs
docker build
to use the Dockerfile found in that sub-directory. This specific
Dockerfile installs an Athena release. Alternatively, a nightly release can
be installed with the following command:
docker build -t athena:21.0.39_2017-10-01T2151 --build-arg RELEASE=21.0.39 --build-arg TIMESTAMP=2017-10-01T2151 .
The specific nightly for a given release number is set with the TIMESTAMP
option.
docker run -i -t -v /cvmfs:/cvmfs -v $HOME:$HOME athena:21.0.38
Refer to the Mac or Ubuntu setup sections for arguments to docker run
which
are specific to these platforms. For interactive processes (like a shell), you
must use -i -t
together in order to allocate a TTY for the container process.
-i -t
is often written -it
. To automatically remove the container after you
exit, use the extra option --rm
.
When installing the master branch of Athena
, it may be necessary to patch the
base installation for large RPMs. If this becomes necessary, you would need to
add the following commands (with the appropriate syntax) to the Dockerfile:
wget http://atlas-software-dist-eos.web.cern.ch/atlas-software-dist-eos/RPMs/rpm/4.8.0_patch/rpm-libs-4.8.0-55.slc6.UNSUPPORTED.x86_64.rpm
rpm2cpio rpm-libs-4.8.0-55.slc6.UNSUPPORTED.x86_64.rpm | cpio -idmv
export LD_LIBRARY_PATH=$PWD/usr/lib64:$LD_LIBRARY_PATH
If you have your grid credentials in a sub directory of your local home area, add the following additional option to the parameters of docker run:
-v $HOME/.globus:/home/atlas/.globus
when you setup Rucio with lsetup rucio
set the RUCIO_ACCOUNT
to the user
associated with the credentials.
To open additional shells of a running container use the docker exec
command:
docker exec -i -t <CONTAINER ID> /bin/bash
where the hash CONTAINER ID
is the container ID of the docker machine. This
hash is typically displayed as the hostname in the shell; however, if it is not
visible, type:
hostname
or open a new shell and type:
docker ps
This last command prints a list of all running containers with their CONTAINER
ID
.
You can save a docker image locally and restart it using the following commands:
exit
commanddocker commit <CONTAINER ID> athena:21.0.38
, where
the hash CONTAINER ID
is the hostname or container ID of the docker machine.
If the hash is not visible, the following command will print a list of existing
containers: docker ps -a
docker run -i -t -v /cvmfs:/cvmfs -v
$HOME:$HOME athena:21.0.38
If you want to share a docker image with other users, you can create a local snapshot and upload it to Docker Hub. Remember to remove your grid credentials from the image if you had copy them to it.
docker commit <CONTAINER ID> athena:21.0.38
The meaning of CONTAINER ID
was explained in the previous section.
IMAGE ID
hash with:
docker images
Note: this is different from the container ID!
docker tag <IMAGE ID> username/athena:21.0.38
(Replace username
with your Docker Hub account name)
docker login
docker push username/athena:21.0.38