The information can be taken from https://github.com/NIH-HPC/Singularity-Tutorial. I’m just documenting what I understand step-by-step
EXEC Command
Using the exec
command, we can run commands within the container from the host system.
[user1@node ~]$ singularity exec lolcow_latest.sif cowsay 'How is today?'
_______________
< How is today? >
---------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
RUN Command
Sometimes you can run a container
[user1@node ~]$ singularity run lolcow_latest.sif
_____________________________________
/ Fine day to work off excess energy. \
\ Steal something heavy. /
-------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
A special script “runscript” is activated when the “run” command is exercised. To have a closer look
[user1@node ~]$ singularity inspect --runscript lolcow_latest.sif
#!/bin/sh
fortune | cowsay | lolcat
runscript consists of three simple commands with the output of each command piped to the subsequent command. Altenatively, you can do a
[user1@node ~]$ ./lolcow_latest.sif
Pipes and Redirection
Singularity allows piping services so that the host system can interact with the container. Here we are executing a command in the container and piping the output out into a file called output.txt
[user1@node ~]$ singularity exec lolcow_latest.sif cowsay moo > output.txt
You will notice that the output has been pushed to output.txt. Make sure you create output.txt prior
[user1@node ~]$ vim output.txt
Inside output.txt
How are you >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Let’s say we create a file called HelloThere and put in a text called “Shame On You”. The command is then fed into cowsay.
% cat HelloThere | singularity exec lolcow_latest.sif cowsay -n
______________
< Shame on You >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
References: