Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
fcs:eic:singularity [2017/06/16 17:01]
dblyth [On the Open Science Grid (OSG)]
fcs:eic:singularity [2017/09/12 21:00] (current)
hepsim17
Line 3: Line 3:
 Singularity can serve to provide a portable complete environment for EIC studies.  Due to the ubiquity of Docker, a convenient approach is to maintain a Docker image which can be used to generate Singularity images.  The generated Singularity image can then be used on the end user's computer and transported to machines with greater resources when needed. Singularity can serve to provide a portable complete environment for EIC studies.  Due to the ubiquity of Docker, a convenient approach is to maintain a Docker image which can be used to generate Singularity images.  The generated Singularity image can then be used on the end user's computer and transported to machines with greater resources when needed.
  
-As an example, let's use an established Docker image.  First, Singularity must be installed on your system (see [[http://singularity.lbl.gov]]).  Then, we will create an image with enough room to fit the Docker image contents.  **WARNING:** this will take GB!  The image can be readily deleted when it is no longer needed.+As an example, let's use an established Docker image.  First, Singularity 2.3 or newer must be installed on your system (see [[http://singularity.lbl.gov]]).  Then, we will create an image from an image hosted on Docker Hub.  **WARNING:** this will take ~10 GB!  The image can be readily deleted when it is no longer needed.
 <code bash> <code bash>
-sudo singularity create -s 6000 fpadsim.img +singularity pull docker://argonneeic/fpadsim:v1.4
-sudo singularity import fpadsim.img docker://dbcooper/fpadsim:singularity+
 </code> </code>
-Note that sudo is needed.  This is only for the creation of the image.  Running the image does not require special privileges.  Note also that a special tag (:singularity) in this repository has been created for use with Singularity.  This is because this particular tag references a flattened image, since Singularity does not correctly handle multiple layers when files are overwritten in the Docker image build. 
  
-The file "fpadsim.img" now contains an complete environment necessary for simulating and reconstructing EIC events.  In order to use the image, we have a few options.  The most direct way to get into a fully set up environment is+The file "fpadsim-v1.4.img" now contains an complete environment necessary for simulating and reconstructing EIC events.  In order to use the image, we have a few options.  The most direct way to get into a fully set up environment is
 <code bash> <code bash>
-singularity exec fpadsim.img bash -l+singularity exec fpadsim-v1.4.img bash -l
 </code> </code>
 .  Barring any errors, you are now running inside a container.  It is a container configured to be quite transparent, and you should be able to see all the files within your home directory as well as the processes that are running outside of the container when you run "top" This is in contrast to the default configuration of a Docker container, where isolation is desired.  While your home directory is mounted within the container, the system files have been replaced by the contents of the container.  Go ahead and try commands like "slic", "promc_browser", "jaspp", etc. .  Barring any errors, you are now running inside a container.  It is a container configured to be quite transparent, and you should be able to see all the files within your home directory as well as the processes that are running outside of the container when you run "top" This is in contrast to the default configuration of a Docker container, where isolation is desired.  While your home directory is mounted within the container, the system files have been replaced by the contents of the container.  Go ahead and try commands like "slic", "promc_browser", "jaspp", etc.
 +
 +====== Useful commands ======
 +
 +Download the image, and look inside. 
 +<code>
 +sudo singularity shell --writable --contain  fpadsim-v1.4.img
 +</code>
 +Now you can add files.
  
 ===== On the Open Science Grid (OSG) ===== ===== On the Open Science Grid (OSG) =====
Line 23: Line 29:
 First, ssh access to OSG Connect must be established.  On the OSG Connect login server, you should see all of the available Singularity images in an uncompressed form mounted at <code>/cvmfs/singularity.opensciencegrid.org</code> To run the same image as in the above section, simply run the following line. First, ssh access to OSG Connect must be established.  On the OSG Connect login server, you should see all of the available Singularity images in an uncompressed form mounted at <code>/cvmfs/singularity.opensciencegrid.org</code> To run the same image as in the above section, simply run the following line.
 <code> <code>
-singularity exec /cvmfs/singularity.opensciencegrid.org/dbcooper/fpadsim\:singularity/ bash -l+singularity exec /cvmfs/singularity.opensciencegrid.org/argonneeic/fpadsim\:v1.4/ bash -l
 </code> </code>
  
 For submitting Condor jobs, it's necessary to require that the target machine as Singularity installed by adding <code>HAS_SINGULARITY == TRUE</code> to your "Requirements" in your Condor submit file.  The optional (but recommended) way of loading the required image on the target machine is by adding the following lines to your Condor submit file, For submitting Condor jobs, it's necessary to require that the target machine as Singularity installed by adding <code>HAS_SINGULARITY == TRUE</code> to your "Requirements" in your Condor submit file.  The optional (but recommended) way of loading the required image on the target machine is by adding the following lines to your Condor submit file,
 <code> <code>
-+SingularityImage = "/cvmfs/singularity.opensciencegrid.org/dbcooper/fpadsim:singularity"++SingularityImage = "/cvmfs/singularity.opensciencegrid.org/argonneeic/fpadsim:v1.4"
 +SingularityBindCVMFS = False +SingularityBindCVMFS = False
 </code>, </code>,
-Where SingularityBindCVMFS can be changed to True if the cvmfs mount is required inside the container.  With these options added, the use of the Singularity image by your OSG job wrapper script is fairly seamless, and the job executable will be run inside of the image via the default shell, /bin/sh.  For this particular image, the default shell will not load the environment setup scripts, so it's usually necessary to run commands inside of a bash login shell, +Where SingularityBindCVMFS can be changed to True if the cvmfs mount is required inside the container.  With these options added, the use of the Singularity image by your OSG job wrapper script is fairly seamless, and the job executable will be run inside of the image via the default shell, /bin/sh.  For this particular image, the default shell will not load the environment setup scripts, so it's usually necessary to run commands inside of a bash login shell by either using the shebang 
-<code> +<code bash
-bash -l -"..."+#!/bin/bash -l 
 +</code> 
 +, or by wrapping commands like 
 +<code bash> 
 +bash -lc "..."
 </code> </code>
 .  This environment can be tested on the login server by running .  This environment can be tested on the login server by running
 <code> <code>
-singularity shell /cvmfs/singularity.opensciencegrid.org/dbcooper/fpadsim\:singularity/+singularity shell /cvmfs/singularity.opensciencegrid.org/argonneeic/fpadsim\:flat/
 </code>. </code>.