Hi,
On Fri, May 27, 2016 at 04:45:10PM +0300, Taras Shapovalov wrote:
> Hi guys,
>
> Could you help me to understand the difference (from user prospective)
> between Singularity and runC <
https://github.com/opencontainers/runc>.
I haven't played with runC, but your mail has stirred my curiosity.
>
> In case of runC you need to have some unpacked bundle in a filesystem
> directory, then you go inside it and run runc command (you need to have
> some spec file inside the directory that describes the container). And runC
> starts a new container for you. It seems that Singularity does almost the
> same. The only difference I see is how Singularity helps to package the
> bundle (resolves dependencies) + how it is integrated with OpenMPI + in
> v2.0 the image is not unpackaged into a cache. Is my understanding correct?
>
> Have you ever considered using runC as a backend of Singularity?
- I am still running CentOS-5, and runC needs golang which does not
support my current soon EOL distribution of choice.
I failed to compile the latest go 1.6.2 from go 1.4.2/1.4.3:
<snip>
[tru@sillage src]$ GOOS=linux GOARCH=amd64 ./bootstrap.bash
#### Copying to ../../go-linux-amd64-bootstrap
#### Cleaning ../../go-linux-amd64-bootstrap
#### Building ../../go-linux-amd64-bootstrap
##### Building Go bootstrap tool.
cmd/dist
FATAL: kernel too old
go build _/home/tru/build/go-linux-amd64-bootstrap/src/cmd/dist: /c5/shared/go/amd64/1.4.2/pkg/tool/linux_amd64/6g: signal: segmentation fault
</snip>
That pretty much a road block for me: I can't even compile the compiler to build the tool!
Of course that not an issue if your are running a recent linux distribution, but what
will happen in a few years when golang and runC move forward?
OTOH, I just need a basic environment and I can build singularity on all my
platforms, (CentOS-5 CentOS-6 and now CentOS-7) the idea is being able to use
singularity to allow the newer distribution to run the older binaries without
too much effort.
RHEL is providing N->N+1 runtime "assurance" between major releases,
singularity might give me N->N+2 or more without too much effort (ie by
packaging and not recompiling).
With singularity I gain a backward compatibility for free: a CentOS-6 (glibc
2.12) getconf running on CentOS-5 is neat:
[tru@sillage singularity]$ rpm -q glibc
glibc-2.5-123.el5_11.3.i686
glibc-2.5-123.el5_11.3.x86_64
[tru@sillage singularity]$ singularity exec Centos-6.img getconf GNU_LIBC_VERSION
glibc 2.12
Of course there are limitation, a CentOS-7 container does not run on my CentOS-5:
[tru@sillage singularity]$ singularity exec Centos-7.img df
FATAL: kernel too old
Fair enough, retro compatibility has limits!
Likewise, I hope to be able to package executable accross linux distributions:
debian/ubuntu/alpine. Portability and simplicity are strong selling points.
I still build from sources, rpm build for a specific distribution, using
modules (or lmod) to isolate the dependencies and software versions (or use
easybuild/spark/SCL/... your choice of framework). Singularity would allow
me to give these prebuilt tools to others distributions of the same family
or not.
Bottom line, I believe that singularity is adressing my needs, ymmv :D
Best regards,
Tru
--
Dr Tru Huynh |
http://www.pasteur.fr/research/bis
mailto:
t...@pasteur.fr | tel/fax
+33 1 45 68 87 37/19
Institut Pasteur, 25-28 rue du Docteur Roux, 75724 Paris CEDEX 15 France