Singularity Is Now Apptainer! What Does This Mean for You? webinar poster

Singularity Is Now Apptainer! What Does This Mean for You?

Watch Now

Webinar Synopsis:

Speakers:

  • Zane Hamilton, Vice President of Sales Engineering, CIQ

  • Forrest Burt, High Performance Computing Systems Engineer, CIQ

  • Ian Kaneshiro, Software Engineer, CIQ


Note: This transcript was created using speech recognition software. While it has been reviewed by human transcribers, it may contain errors.

Full Webinar Transcript:

Zane Hamilton:

Good morning. Good afternoon. Good evening. Wherever you are. Welcome to the CIQ webcast. For those of you who have been with us before, welcome back; for those of you that are new, we appreciate you coming. We appreciate your time. Go ahead and like and subscribe so you can stay up to date with what we are working on and what we are doing. My name is Zane Hamilton. I am a director of solutions architecture here at CIQ and over the last few weeks, we have been doing several of these. If you did not see last week with Greg Kurtzer talking about Warewulf, check it out. Great talk this week: we are going to be talking about containerization and we are going to be talking about Apptainer in particular. I have a couple colleagues with me, Forrest and Ian. Welcome Forrest, welcome Ian. Forrest, you have been on here before. Most of these people know you, but go ahead and introduce yourself.

Forrest Burt:

Hi everyone. My name is Forrest Burt. I am a High Performance Computing systems engineer here at CIQ. I have been a user of Singularity since about version 3.03 or so when I used it to deploy containerized workloads across some High Performance Computing architecture at a previous institution. I am very excited to be here discussing Apptainer and to have seen the transition from Singularity to Apptainer. Thank you for having me, Zane.

Zane Hamilton:

Thank you. Ian, you are new to the channel. Welcome. We appreciate your time. Tell us about yourself.

Ian Kaneshiro:

It is great to be here. My name is Ian Kaneshiro. I am a software engineer here at CIQ and a maintainer of Apptainer. I first got started with Apptainer, in its previous form as Singularity, back in 2018, when the project was undergoing a rewrite from version 2 to version 3. I was involved with the initial version 3 release and have been with the project ever since.

Zane Hamilton:

Thank you. I think we should probably level set a little bit and let's kind of define what we mean when we are talking about container. How is Singularity / Apptainer different? How is it the same? Just a little bit of a level set, if you don't mind.

Apptainer vs Container [01:55]

Ian Kaneshiro:

We can start off with what is a container, and from my perspective, I think the way that users of Apptainer use containers is really a way of packaging an application and including all of the application dependencies, in a way that is portable across systems. If you build a container on one system you should be able to run it on another system. All of the shared libraries and things like that, which an application might depend on, are actually packaged within the container image and brought around with it to whatever machine that is being run on. I would say the primary use case that users of Apptainer reach for containers is for High Performance Computing workloads. The requirements of these environments are different from what you would typically see in environments that run Docker, where you need hard separation of users by POSIX permissions. That means you cannot have a root-owned Daemon spawning containers that any user can connect to and control. With Apptainer, this allows users to spawn containers as their user and all the processes spawned by Apptainer, stay as their user and are actually unable to escalate privilege at all.

Zane Hamilton:

Staying in that same vein, why would someone choose Apptainer for their HPC environment? I mean, you gave some pretty good examples. Is there any other reason? Dive into that a little bit.

Why Apptainer? [03:19]

Ian Kaneshiro:

One of the unique things about Apptainer is the image format that it uses. Most of the container ecosystem, and actually all of it to my knowledge, uses container images in the format of a root fs directory. The image itself is stored as a tar and then extracted into a directory, then used directly from there. For Apptainer, we actually have a SquashFS file system inside of our SIF images. We mount that directly using a loop device. This actually leads to some beneficial performance on shared storage systems, because it minimizes the metadata lookups on those types of file systems, which is very useful in HPC environments that tend to use those kinds of storage systems.

Zane Hamilton:

Excellent. Go ahead, Forrest.

Forrest Burt:

I was just going to say, Apptainer also has a big focus on integration over isolation. There is a big focus in High Performance Computing environments on being able to enable different kinds of specialized pieces of hardware and software, to be used by applications that are inside of a container. Rather than try to isolate the container from the host, Apptainer actually works to integrate the capabilities of the host within the container. You can do things like run MPI stacks out of it, be able to interface with GPUs, and things like that. Common aspects and pieces of different technology found in HPC environments can be pretty easily integrated into an Apptainer container and run across that architecture. That is another kind of big pull of Apptainer to HPC.

Zane Hamilton:

Excellent. One of the things that I really wanted to talk about with you guys today is that transition from Singularity to Apptainer. I know I say Singularity a lot of times now; I catch myself saying it pretty much all the time. It is new to me. I just want to understand a little bit, what does that migration look like when you are moving from Singularity to Apptainer?

Singularity to Apptainer [05:34]

Ian Kaneshiro:

The migration from Singularity to Apptainer has two aspects to it. There is what the system administrator needs to do in order to install Apptainer and retain the type of configuration that the container system had in its previous installation with Singularity. Then there is the user aspect, which is really just about migrating user configuration that was used by Singularity to be exposed to Apptainer for basically continuity. I think Forrest has a demo for those two aspects that he can go into.

Zane Hamilton:

Is there anything specific that you have to do? Do you have to rebuild that, from your definition file as you are moving from Singularity to Apptainer? Or can you just run the containers themselves?

Ian Kaneshiro:

For the migration itself, we are talking about the actual host machine that the Apptainer program or formally Singularity program is installed on in order to run containers. Zane's question is about users using containers, which have already been built with Singularity, with Apptainer in a new installation. The answer to that is, there is no rebuilding or changes needed. Apptainer will run all of your Singularity-built images just as in the same manner as Singularity would run them. One of the core things about doing this rename of the application is to minimize impact users ,and using the same container format, and ensuring that old containers will work with Apptainer as well as containers built with Apptainer will work with Singularity was very important in order to make sure that, you don't have disruptions to how the community uses containers.

Zane Hamilton:

So there is backward compatibility as well.

Ian Kaneshiro:

If your system is using Apptainer and your colleague has Singularity installed on their cluster, because they have not upgraded yet, if you build a container with Apptainer, you are going to be able to share that with them and they will be able to verify your results and do things like that.

Zane Hamilton:

Excellent. Forrest, I think you are going to show something.I know we have a question out there about other use cases. Let's let Forrest get through this and then we will dive into that.

Forrest Burt:

I have a real quick demo to go over the components of that migration. 

I am sitting here on a VM. This is basically just running Rocky Linux. What I am going to show you here is the system and the user side of this migration. This Rocky machine has Singularity installed on it. You can see, I can do  ‘singularity - -version’ and you will see, we have version 3.83 on here. You can see that, in just a moment, I will go ahead and run Apptainer and what we are going to see happen here is, first off, there will be a notice printed that is going to say something to the effect of, there is still a Singularity configuration directory found out there, and it does not appear as though the CIS admin in charge of this server here has migrated those configuration options from Singularity to Apptainer. Then you also see a message come up that shows some info about some of my user Singularity configurations being moved over to Apptainer.And you will see a couple of messages, which describe exactly what is being moved there. 

I will go ahead and run Apptainer for the first time. This is, as I alluded to, the first time I have run Apptainer on this virtual machine. You will only see, for example, one of these migration messages once, the user side one. The system side one will continue to appear until that migration is done. I will show you that in a moment. But we will go ahead and run, Apptainer for the first time. We will see that up here we have a few messages, namely this ‘/usr/local/etc/ singularity exists, migration to apptainer by system administrator is not complete.’ As I mentioned, that is the system side of the migration, notifying you that it is not complete. We also have these detected Singularity user configuration directory messages, about a public and private PGP key ring. Those are about those being migrated. 

If I go to my per user Singularity file, which I have here in my user home and I do this, you can see that I have two existing PGP keys sitting in there. Now if I look at  ‘.apptainer,’ which did not previously exist before I ran this command, you can see we have ‘ls .apptainer/keys/’, and we can see that those keys have been migrated over. That is how your user configurations will get moved over to Apptainer when you run it. When you want to do the sysadmin side of it, we will navigate to ‘usr/local/etc.’ We will just take a look at what is in here. You can see we have Singularity and Apptainer.

If we take a look at what is in Singularity, you can see we have the system Singularity configuration files in here. These are things like Singularity.conf, the library lists for GPU support, that kind of thing. If we want to go ahead and migrate our configuration over, that is just as simple as doing ‘sudo cp singularity/singularity.conf’  and then we will land that at ‘apptainer/apptainer.conf.’ As I mentioned, if you have custom Singularity configuration files you’ve done over time, we can do this to migrate them, and then once we have moved over everything we need to move over from that user local etc/ singularity, we can go ahead and I will just take the nuclear option here. We will do ‘sudo rm -rf singularity’  to get rid of that file entirely. That will get rid of it. We will go back here. Then when I run Apptainer, you will see that we do not get that sysadmin migration message anymore. You will see up here at the top, we do not get that per user message because that has already been moved over. Then, because we just moved the system stuff over and got rid of those Singularity files, we do not get any more messages saying that the migration is no longer finished. The transition overall from Singularity to Apptainer is pretty simple. It is basically just moving over your configurations, which you need to do on the system side, but it is pretty simple overall; it is a pretty seamless transition.

Zane Hamilton:

There are not really any lingering issues when you are transitioning from Singularity to Apptainer that you have noticed or run across, are there?

Forrest Burt:

No, not really. It works pretty seamlessly. If you are working with RPMs, you may have to do some un-installation there of the Singularity of like a previously installed Singularity RPM, because the Apptainer will want to install over that. You might have to do that, but in general, the instructions are out there for how to install Apptainer there on GitHub, and installing that from source is pretty simple, or using the RPM, if you want to go that way. One of the big points of the transition and the work that has been going on the engineering side of that thus far has been to ensure that backwards compatibility is pretty seamless. Thus far that has pretty much gone well. There is not too much else you have to look at there. Ian, do you have anything you would want to add to that or is it pretty much seamless at this point?

Ian Kaneshiro:

No. You covered it. If there are any issues, we would love to hear about it. I think in the description, there is a link to the Apptainer on GitHub. So you can post an issue if during your migration, you come across problems that need to be addressed.

Zane Hamilton:

Very good. One of the things that we keep running across, or I keep having brought up in my discussions, and a lot of that is outside of just HPC but kind of in the enterprise spaces, is: what else can be done with Singularity? What other use cases outside of HPC are we seeing?

Singularity Use Cases [13:21]

Ian Kaneshiro:

I would say any use case where you need to have the ability to access a lot of resources on the host. What most container systems' goal is to give you the view of your container as if it was a VM, so as if it was isolated from the host and its own thing. And so the container process basically doesn’t have any real concept of anything else on that machine other than what was exposed to it very intentionally, whereas Apptainer has the concept of integration over isolation. By default, we do things like expose host file systems and host devices into the container to make them accessible because the core use case is really about getting the most out of the hardware that you are running your container on. I would say, outside of HPC, I am not sure which way to go with that question because, when I think of HPC, I usually think academic, but there is a lot of enterprise workloads that are moving towards more HPC style. Some enterprises have always been in an HPC kind of arena that has been doing real-world modeling, in order to do simulations of basically the world around it. Whether that is doing structural analysis or computational fluid dynamics, those types of workloads have always been important outside of the academic community in order to do engineering work.

I would also say, Apptainer has some interesting features related to signing and encryption, where if your use case requires things like being able to guarantee that the container you are using was created by the holder of a PGP key, you can do that with Apptainer very easily. What Forrest showed in his demo was moving a public and private key ring. That can be used with Apptainer in order to check to see if a container image, a SIF image, which natively supports these types of signatures has been signed by a particular individual and whether it has been signed by an individual that you might require in order to run on your system. We have the concept of an execution control list related to signatures so an administrator could say, “I only want these identities to be able to build containers that run on my system,” and then that will be enforced by the container itself. There are also features around container encryption. We encrypt the container file system and all of the application data, encapsulated within that container. That allows you to have not only encryption in trans of the container image, but also at rest on the node. It is only decrypted within the memory of the node, when it is actually run for execution.

Zane Hamilton:

Very nice. I think there was another question that just popped up about migration: any other files/directories need to be migrated or changed, Forrest, as you are going through that, or just that Singularity directory?

Forrest Burt:

I am going to pass that off to Ian. Those are the ones that I am aware you have to do. Ian, are you aware of anything else that you need to do just moving those system files and making sure that your per user configuration is over?

Ian Kaneshiro:

No, what I will do is clarify a little bit on the system administrator side of things. The one main change for the Apptainer configuration directory, I think it is called SysConfigDir, in our build system and then our RPM packaging. The actual main configuration file was previously called singularity.conf, and now it is called apptainer.conf, so you will need to do a file rename. All the other files are named identically as they were for Singularity installations, and so you can actually just move those over directly without a rename.

Zane Hamilton:

It seems like this whole thing is set up to be very easy to maintain. Maintaining an Apptainer environment seems fairly straightforward. Am I off?

Ian Kaneshiro:

That is one of the goals, not only of this rename, but of the project itself is to make the workload of the administrators administering these clusters easier. If there are sharp edges or things that are problematic for administrators, we want to hear about it in order to help alleviate that.

Zane Hamilton:

But usually whenever I think of something being simple, I also think of limitations that come along with it. Are there limitations with what I can put into a Apptainer container or number of applications I can put in it? What are the limitations of it?

Limitations of Apptainer Containers [17:47]

Forrest Burt:

I would say that the limitation is probably more practicality than anything. There is not really a limit to what you can put inside of that file system. It is pretty extensible how you can define what you want the container to do on build. And you can basically install things into it on more or less the same procedures you would be using on the host. There are caveats that are related to how containers technically work, but, for the most part, you can basically do anything that you would do on the host. I personally have never met an application I could not containerize with Apptainer. Like I said, it comes down to what is going to be practical, what is going to be the best moving forward to manage that container. If it has a lot of different software dependencies things that are going to have to be updated, maintained, things like that. It basically comes down to practicality and how much maintenance you want to have to do of that container depending upon what exactly you have put in it, but no technical limit really to what you can put inside of one.

Ian Kaneshiro:

So continue on that thread. One of the limitations I would say is not actually with what you could put into a container, but how you can run the container. Apptainer is a Linux container platform, which means you need to have applications that are able to interact with a Linux kernel for system calls. You could not take a Windows application or a Mac OS application and put it inside of Apptainer and be able to expect it to run just like you want to be able to install those on a Linux host and expect them to run natively. You could try using something like Wine to do emulation, but for the most part, users of HPC, which is kind of our core crowd, are already using Linux and so  it’s a very natural fit.

Zane Hamilton:

Sure. So making that statement really means it is very kernel dependent.

Ian Kaneshiro:

It is kernel dependent in terms of the kernel flavor, but with respect to kernel versions, within Linux, it is actually very portable. We recommend having a kernel of 318 or higher, which is a relatively old kernel, and the kernel itself as a project has done a great job of being very stable with its system call interface, which is the reason why Linux containers are able to exist in the form that they do.

Zane Hamilton:

We have a question about environment variables. Can you see those environment variables after your container in Apptainer has been executed?

Environment Variables [20:05]

Ian Kaneshiro:

Yes. Apptainer will automatically forward environment variables, so the backup Apptainers are usually spawned from a user shell or from a batch script. Once Apptainer is called, it will actually take the environment that is currently existing, where it was called, and propagate that to the container environment. You can also explicitly set environment variables that you only want to be exposed within the container by using a particular set of prefixes, an APPTAINERENV_, and then the environment variable name and the value. In general, and in the standard use case, Apptainer will automatically forward environment variables to your container. You can use flags if you would like to prevent environment forwarding in order to stop that from happening.

Zane Hamilton:

This is an interesting question. I have not ever really thought about this before, but will there be an Apptainer hub, kind of like Docker hub, Singularity hub?

Ian Kaneshiro:

I think that is a good question. And I think, it really comes down to what are the needs of Apptainer and of SIFs, in order to be stored and used by the user base. The nice thing about the image format being a single file is you can use any form of storage that is able to handle blob storage, essentially. Singularity hub is in read-only archive mode right now, so you can still pull images and run them. But if you need a place to push SIF images, you can use things like blob storage systems like S3, and you can also use OCI registries that support the OCI artifact specification, which is essentially a way of using OCI artifacts as arbitrary blob storage, which fits nicely with current infrastructure. If a registry supports that API, then you can store both your Docker images and your Singularity images in the same registry, side by side.

Zane Hamilton:

All right. So I know, Forrest, you talked about MPI applications a little bit earlier when we started looking at running Apptainer and dealing with file systems - how does that work? Can you use external file systems or will it handle external file systems?

Apptainer and File Systems [22:25]

Forrest Burt:

Most definitely. This ties in a little bit with what we were saying about the integration versus isolation approach. Apptainer is basically sitting on your server as a single runtime. There is no Daemon-based system, or anything like that, that images have to be built against. It is basically just the single Apptainer runtime, which runs the single Singularity image file container files. When you are actually using Apptainer on a server, you can basically just treat your Apptainer containers just the same as you would any other file on that, and run those with that run time. It also gets into integration over isolation. Apptainer, which, as we have said, is built to interact with that external file system with regards to host devices and host capabilities, host software stacks, things like that. There is an ability to bind files in, for example, from that host file system if you need to do that, and those can appear at a location in the container that you’d like them to be at. Apptainer in general doesn’t really have a problem dealing with external file systems. It is really meant to integrate with those external file systems, so that is one of the primary points of it.

Ian Kaneshiro:

I will just add onto that, too, to say that by default Singularity mounts the user home directory into the container. For usual work with HPC resources, that user home directory is typically a network storage system, and there is also usually a slash share. Singularity will mount like your home directory. You will have all of your user configs that you would normally have on that node inside of the container. It will usually just feel like you have swapped your user space operating system when you use a Singularity container or Apptainer container - saying the wrong name.

Forrest Burt:

I have something that can show off being the same user inside and outside of the container, if we would like to do that real quick.

Ian Kaneshiro:

Yes.

Zane Hamilton:

I think this leads into the next topic I wanted to get into is that multi-tendency. How does this work in a multi-tenant HPC environment?

Forrest Burt:

To show you what maybe a typical flow would look like for getting a container from some type of registry out there onto your server and then being able to use it with Apptainer. I will just go ahead and show you. We will do something really simple here in the Ubuntu container. We will do ‘ubuntu: focal’ and we will just go ahead and pull that.

Ian Kaneshiro:

While he is pulling that, I will just say that what is happening right now is he is actually pulling a Docker container from Docker hub, the default Ubuntu image, or I guess the focal tag, and in the background, we are quickly building that into a SIF and caching it within his home directory in order to use it as a SIF for future commands. You can use any OCI image as a source for an Apptainer container.

Forrest Burt:

One big thing to note about when we are doing this, is that there is no concept of layers essentially inside of an Apptainer. While Docker and containers from other run times are built as a layer format, Apptainer essentially takes all those layers and squashes them together into that single SquashFS container file system. There is no concept of layers in it and it decreases your attack plane there for cybersecurity and other purposes, which is useful. You can see that this has gone ahead and finished. We have created a SIF by doing ‘ls’ You can see that we can do focal over here. I will go ahead and do really quickly, just cat this text file here, so you can see what is in it. 

If I go ahead and do ‘apptainer shell,’ and then I put in this container here to get a shell into this container, you will see that I get an initial error because I am sitting on a VM and this happens. Really quickly, I will do ‘cat /etc/os-release.’ You can see that I am here on Rocky. If I do a ‘whoami,’ you can see that I am ‘test,’ just a test user on this VM. If I go ahead and do ‘apptainer shell,’ you will see I am now inside of this container and I have a shell into it. If I do ‘cat /etc/os-release,’ you can see, we are now on Ubuntu. If I do an ‘ls,’ you can see that I can still access all of my standard files here. I can cat that right there.

If I do ‘whoami,’ you will see I am still testing here. I can even do things like, for example, ‘this is more test text’ and append that to this file that I have here. Then I can even do this. You will see that those are both visible inside of the container here. This file, right here. You will see, we have managed to append that successfully, and we have created this other file successfully. If I exit out of the container, you can see that both of those files are also present, and I can do this to see the file that I created right then. We only expect one line, and then checking the other one. You can see we have both the original line and the one that I added there. Point being here, as we discussed in the multi-tenant environment of an HPC cluster, the standard way that Apptainer runs is to make the user inside of the container, the same user as outside of the container and preserve all those access controls. 

If I go, once again, just to show you, if I go into this container and I try to say ‘cd / root,’ I get permission denied. If I try to do this, you can see once again, permission denied. I remain my same user with my same user's permissions inside of the container. There is no elevation or anything to work out there. In the multi-tenant environment of an HPC cluster, that is how Apptainer works to preserve access controls and make it a viable option for people to deploy their workloads.

Ian Kaneshiro:

One thing I will add there is just that the processes that are spawned by Apptainer are using a process, I don't know the right word for it, but we set a parameter called PR no_new_privs, which basically means that that process and any descendant processes have no ability to gain any additional privilege on the system than they currently have. Typically, this actually makes running any kind of application inside of an Apptainer container safer than if you ran it just as your user on that system, because sometimes you might have capabilities assigned or the ability to use UID programs and things like that. This actually just blocks all escalation.

Forrest Burt:

The recent, for example, pkexec vulnerability that came out when tested in Apptainer, as I believe we have a video out there of, trying to exploit that inside of an Apptainer, is just shut down natively because of its security model. There is a real world example of how Apptainer increases the security on your system beyond that of which that is available normally.

Zane Hamilton:

One of the questions that came in, and I am not sure I understand the question fully, but it is asking about build remote. Will there be the ability to build remote?

Build Remote? [29:55]

Ian Kaneshiro:

The API, what that was essentially an API that is not widely adopted within the community and to the point where we can make an open standard. It is solely for a commercial organization's cloud platform, and as a part of our migration to the Linux foundation, we needed to remove proprietary APIs from our application, so we had to remove that one, in order to be compliant. I would say that most of the benefits of remote build are actually, something that you can replicate with what we call our fake root feature. So on standard installations of Apptainer, when you build, you can use the dash dash fake route flag. What this will do is allow you to run your build as if you were a route user inside of the build environment when you are still actually not on the system. It is still safe to do because the primary use case of the remote builder was to do container definition builds, which required you to be on the system in order for things like package managers to properly work, since they usually do a straight user ID check to make sure that they are zero. A fake route allows these types of bills to progress.

Zane Hamilton:

Very good. Thank you. Forrest, I know you and I talked about this one about before, but does Apptainer support or have support for GPUs?

Does Apptainer have support for GPU's? [31:26]

Forrest Burt:

Absolutely. GPUs are one of the pieces of hardware that Apptainer is built to support, because those are a massive High Performance Computing use case. At the moment there is native support inside of Apptainer for both NVIDIA and AMD GPUs. When we were looking at those system configuration files earlier, you may have noticed an ‘nvliblist’ and a ‘rocmliblist’ file. Those are maintained. Those are, essentially, what the container needs in order to be able to support GPUs inside of it. That is a list of libraries that essentially have to be bound to the container when you want to run a GPU application. Apptainer has a specific flag dash dash nv that brings, for example, those NVIDIA libraries into the container to make them available for applications that need them. Apptainer absolutely supports GPUs. That is a huge High Performance Computing use case. It even has native support in it for the two major GPU manufacturers out there.

Zane Hamilton:

That is great. So Ian, I have another question for you since I have you here. Is there anything specific that I have to do to Apptainer to get that involved with my HPC job scheduler?

Job Scheduler and Apptainer [32:34]

Ian Kaneshiro:

Oh, from using it with a batch scheduler, like PBS or those types of things? Not really, you just need to include those inside of your batch scripts in order to take whatever application you would normally run within your batch system and basically add the Apptainer exec with the container image you want to run, inside of your scripts. And that will automatically, or go ahead and spawn those containers on the fly as if you would spawn any normal application, when your batch scheduler goes and runs that script on a node.

Zane Hamilton:

Very nice. Thank you. Now that Singularity is Apptainer, is there anything else that is going to change? Anything to look forward to?

Changes and Features [33:22]

Ian Kaneshiro:

Sure. I would say the main new feature is currently an experimental feature and it is going to be within V1 of Apptainer. It is currently in the release candidates as well that are out right now. That is the ability to checkpoint container instances using a project called DMTCP. This is a project that allows transparent checkpointing for dynamically linked applications. This will give us the ability to do things like run a container instance on one node. And if for some reason that container job either needs to be migrated, because maybe that node has an issue and there is concern that it might fail during part of its job, you could checkpoint that container instance and then go ahead and start that container instance on another node, assuming they both have the same shared storage system and your home directory is available on both of those nodes.

Zane Hamilton:

Very exciting.

Forrest Burt:

Broadly, with the feature of Apptainer, there is a roadmap out there that describes some of the features we are looking at. I know for example, I am really excited to see increased ability to use Apptainer with some more specialized High Performance Computing hardware and software, which is coming out right now. I know that Apptainer has a really exciting future ahead of it with regards to what we are doing with High Performance Computing technology. I am very excited to see where that goes and how some of our new features that we have been talking about on a roadmap get implemented.

Zane Hamilton:

One of the questions I have for you two is, why did Singularity get renamed Apptainer and then moved into the Linux Foundation? What did that achieve?

Why Rename Singularity to Apptainer? [35:08]

Ian Kaneshiro:

The rename is actually a direct consequence of the decision to move into Linux Foundation. When the opportunity arose to move into the Linux Foundation, basically, we asked, reached out to the community and said, “Hey, if you want to be involved with the future of this project, please get back to us” because we wanted to be able to talk about this kind of move. Not in a public forum, not like super secret, but we wanted it not to be public in order to generate hype at that point. We wanted to get those involved within the community and invested in the future of the project to be able to be involved in the decision-making process of that move. So we went ahead and sent out, basically, a document. I think it was to articulate what would be necessary in order to join the Linux Foundation.

One of those things was a rename of the project because the Singularity name itself is something from pop culture and is impossible to trademark. Or I am sure that makes sense to most people. We needed to have a name that the Linux Foundation could hold a trademark for in order to protect the project. We asked for suggestions for future names and what they thought of the move. And when we got all the feedback , it was clear that moving to Linux Foundation was the right move. We had to do the hardest thing programmers can do: name something. We sent out a poll to those community members and Apptainer won. That is how we ended up with Apptainer within the Linux Foundation. I will say the reason for moving into the Linux Foundation, a lot of the benefits are really about ensuring the project stays within the open source community and cannot be controlled by a commercial entity.

Linux Foundation does a great job of ensuring projects are open source projects and any interested contributors or parties can be a part of those communities. It is really important to the Apptainer community. It also gives us the ability to cross pollinate with some of the projects within the Linux Foundation or under the Linux Foundation umbrella within the HPC scope. We would love to be closer with projects like OpenHPC, as well as within just the general container ecosystem, which is primarily cloud-dominated. And so, organizations like the CNCF have a lot of interesting initiatives and projects, and we would love to have those as potential integrations.

Zane Hamilton:

Excellent. You have mentioned the community and people being involved in that. How do people get involved in the Apptainert community?

How to get Involved [37:46]

Ian Kaneshiro:

I think in the description, there is a link to our website to the GitHub repository and our Slack. I think the most accessible way for most people is to just join Slack and say hi, say what you are interested in. If you have any questions about the project, you are always welcome to ask questions there. If you have issues where you are running into problems with the Apptainer program itself, you can go ahead and either ask those questions within the Slack channel, but you can also post issues within our GitHub repository. That is where we do all of our tracking of issues and how to make sure things get fixed. That is a better location for placing an issue itself.

Zane Hamilton:

Excellent. I do not know if we have any more questions out there; if you have a question, post it. I will see if we can answer it real quick while I have these guys' time. And if we don't, I just want to thank you for joining. Thanks, Ian. Thanks, Forrest, for spending some time with us. Forrest, do you have anything else you wanted to talk about?

Forrest Burt:

Just that with that increased push for containers in the cloud, and that discussion of containers and job schedulers and such like that, not to imply too much, but job schedulers and HPC, it’s traditionally a field that containers have struggled to go into for the reasons that we have discussed here – the security model and the specific needs of the environment and stuff. I just want to really quickly point out that with this new revolution in HPC that is going on with the movement to containers and everything, something that we are really big on here at CIQ is mass orchestration of those containers in that HPC environment. To that end, we have something very big we are working on in that regard. We are very excited to bring that to the broader market. Keep an eye out for that out there.

Zane Hamilton:

We just had one pop in, asking about new features and updates and Apptainer over Singularity. I think we kind of touched on that a little bit with it, being able to basically suspend a container and move it if you needed to. Is there anything else, Ian, that you can think of?

Ian Kaneshiro:

No, I would just say that, one of the things to look at for Apptainer is functionality overall is going to be improved because if you are using one of the older versions of Singularity and have not migrated yet, all active development and bug fixers for the projects are going to be going into Apptainer. If you have any issues, Apptainer is more likely to contain the fix for that bug.

Zane Hamilton:

Excellent. Well, guys, if we don't have any more questions, we will wrap this one up. Appreciate you coming, looking forward to next time, I think probably two weeks from now. We will have another topic for you. Ian, appreciate the time, Forrest as always. It is good to see you two and thanks for joining. Do not forget to like and subscribe. Appreciate it.

Transcript

good morning good afternoon good evening wherever you are welcome to the ciq webcast uh for those of you who have been with us before welcome back for those of you that are new we appreciate you coming we appreciate your time uh go ahead and like and subscribe so you can stay up to date with what we're working on what we're doing my name is zane hamilton i'm a director of solutions architecture here at ciq and over the last few weeks we've been doing several of these if you didn't see last week's with greg kurtzer talking about where we'll go check it out it was a

great talk this week we're going to be talking about containerization and we're going to be talking about apptaner in particular so i have a couple guys with me forest and ian welcome forest welcome ian hello what's up forest you've been on here before most these people know you but why don't you go and introduce yourself hi everyone my name is forest bert i'm a high performance computing systems engineer here at ciq i've been a user of singularity since about version 3.03 or so when i used it to deploy containerized workloads across some high performance computing architecture at an institution i was previously at um so

i'm very excited to be here discussing obtainer and to have seen the transition from singularity to obtainer there so thank you for having me zane thank you ian you're new to the channel so welcome we appreciate your time tell us about yourself yeah it's great to be here so my name is ian kaneshiro i'm a software engineer here at control iq and a maintainer of apptaner so i first got started with apptaner in its previous form as singularity back in 2018 when the project was undergoing a rewrite from version 2 to version 3 and go and so i was involved with the initial version 3

release and have been involved with the project ever since awesome thank you so i think we should probably level set a little bit and let's let's kind of define what we mean when we're talking about container kind of how is singularity obtainer different how is it the same just a little bit of kind of level set you don't mind sure so um we can start off with what is a container and from my perspective and i think the way that users of apptaner use containers it's really a way of packaging an application and including all of the application dependencies um in a way that's portable

View full transcriptHide full transcript

across systems so if you build a container on one system you should be able to run it on another system because all of the like shared libraries and things like that that an application might depend on is actually packaged within the container image and brought around with it to whatever machine that's being run on um i would say the primary use case that users of apptaner reach for containers for is for high performance computing workloads and so the requirements these environments are different from what you would typically see in environments that run docker where you need a hard separation of users by posix permissions and

so that means you can't have like a root owned daemon spawning containers that any user can connect to and control so with apptainer this allows users to spawn containers as their user and all the processes spawned by obtainer stay as their user and are actually unable to escalate privilege at all so kind of staying in that same vein why would someone choose apptaner for their hpc environment i mean you gave some pretty good examples but is there is there any other reason or real kind of dive into that a little bit come on unique things about apptaner is just the image format that we use

um that's slightly diff yo oh you have lost uh-oh welcome to live webcast of course in my in my back no there you go there we go welcome back okay yeah sorry from that from that answer we lost you early on okay yeah so one of the unique things about um apptaner is the image format that it uses so most of the container ecosystem and actually all of it to my knowledge uses container images in the format of a root fs directory um and so the image itself is stored as a tar and then extracted into a file a directory and then used directly from

there for obtainer we actually have a squash fs file system inside of our sif images and we mount that directly using a loop device and this actually leads to some beneficial performance on shared storage systems because it minimizes the metadata uh lookups on those types of file systems which is very useful in hpc environments that tend to use those kinds of storage systems excellent so sorry go ahead first i was just going to say um uptanner also has a big focus on integration over isolation there's a big focus in high performance computing environments on being able to enable different kind of specialized pieces of hardware

and software to be used by applications that are inside of a container rather than try to isolate the container from the host obtainer actually works to integrate the capabilities of the host within the container and so you know you can do things like you know run mpi stacks out of it be able to interface with gpus and things like that kind of common aspects and pieces of different technology found in hpc environment can be pretty easily integrated into an obtainer container and ran across that architecture so that's another kind of big pull of obtainer to hpc excellent so one of the one of the things

that i really want to talk about with you guys today is that transition from singularity to apptaner i know i say singularity a lot of times now i catch myself saying it pretty much all the time so it's new to me i just want to understand a little bit what does that migration look like when you're moving from format singularity to obtainer sure so the i think i'm back i'd uh better connection um so the migration from singularity to obtainer kind of has two aspects to it there's what the system administrator needs to do in order to install apptaner and retain the type of configuration

that it had previous that um the container system had in its previous installation with singularity and then there's the user aspect which is really just about uh migrating user configuration that was used by singularity to be exposed to apptainer for basically continuity um so i think forrest has um a demo for for those two aspects that he can go into well he's fine is there anything specific that you have to do do you have to rebuild that uh from your definition file as you're moving from similar to obtainer or you can use processor i think you're talking about the containers themselves yeah correct uh so

for the migration itself we're talking about i'm just to be clear for everyone listening we're talking about the actual host machine that the apptaner program or formula singularity program is installed on in order to run containers and then zane's question is about users using containers that have already been built with singularity with apptaner in a new installation and the answer to that is um there's no rebuilding or changes needed apptaner will run all of your singularity built images just as in the same manner as singularity would run them so we one of the core things about doing this rename of the application is to minimize

impact to users and using the same container format and ensuring that old containers will work with obtainer as well as containers built with apptaner will work with singularity was very important in order to make sure that um you don't have disruptions to how the community uses containers so there's backward compatibility as well it's not just from yeah so if if you're if your system is using optaner and your colleague has um singularity installed on their cluster because they haven't upgraded yet um if you build a container with apptaner you're going to be able to share that with them and they'll be able to like verify

your results and do things like that excellent of course i think you're going to show something i kind of cut you off i know we have a question out there about other use cases let's let for us get through this and then we'll we'll dive into that guys feel free to post questions in there we'll we'll take them obviously it's live so interaction is fantastic we appreciate it cool all right well yeah i have a real quick demo to kind of go over the components of that migration like ian just mentioned uh can everyone see this terminal screen here all right i can see it

cool all right well i'm sitting here on a vm this is basically just running rocky linux and so what i'm going to show you here is kind of the system and the user side of this migration this rocky machine has singularity installed on it you can see i can do singularity dash version and you'll see we have version 3.83 on here you can see that in just a moment i'll go ahead and run out taner and what we're going to see happen here is first off there'll be a notice printed that's going to say something to the effect of there's still a singularity configuration directory

found out there and that doesn't appear as of the sysadmin in charge of this or this server here is migrated those configuration options from singularity to obtainer and then you also see a message come up that shows um some info about some of my user singularity configurations being moved over to apptaner and then you'll see a couple of messages that describe exactly what is being moved there so i'll go ahead and run obtainer for the first time um this is as i alluded to the first time i've run obtainer on this virtual machine so you'll only see for example one of these migration method messages

once the user side one um the system side one will continue to appear until that migration is done so i'll show you that in a moment but we'll go ahead and run obtainer for the first time and we'll see that up here we have a few messages namely this user local etsy singularity exists migration obtainer by system administrator is not complete so as i mentioned that's the system side of the migration i'm notifying you that's not complete and then we also have these detected singularity user configuration directory messages about a public and private pgp key ring and those are about those being migrated if i

go to my singular oops if i go to my per user singularity file that i have here in my user home and i do let's see there it is and i do this you can see that i have two existing pgp keys sitting in there and now if i look at dot app detainer which didn't previously exist before i ran this command you can see that we have ls obtainer keys and we can see that those keys have been migrated over so that is how your user configurations will get moved over to obtainer when you run it when you want to do the kind of

sysadmin side of it we'll navigate to user local etsy and we'll just take a look at what's in here you can see that we have singularity and obtainer if we take a look at what's in singularity you can see we have the system singularity configuration files in here so these are things like singularity.conf the library lists for gpu support that kind of thing um if we want to go ahead and migrate our configuration over that's just as simple as doing cp singularity actually i'm gonna need pseudo on that so sudo cp singularity singularity.com and then we'll land that at apptaner tainor.com so as i mentioned

if you have custom singularity configuration files you've done over time we can do this to migrate them and then once we've moved over everything that we need to move over from that user local etsy singularity we can go ahead and i'll just take the nuclear option here we'll do sudo rm rf singularity to get rid of that file entirely that'll get rid of it we'll go back here and then when i run obtainer you'll see that we don't get that sysadmin migration message anymore so you'll see up here at the top we don't get that per user message because that's already been moved over and

because we just moved the system stuff over and got rid of those singularity files that we don't get any more messages saying that the migration is no longer finished so so the transition overall from singularity to obtainer is pretty simple it's basically just moving over your configs um that you need to do on the system side but pretty simple overall it's a pretty seamless transition so there aren't really any lingering issues when you're transitioning from singularity to app standard that you've noticed or run across are there um no not really it works pretty seamlessly um if you're working with rpms you may have to do

some um uninstallation there of the singularity of a like a previously installed singularity rpm um because the obtainer one will want to install over that um so you might have to do that but in general um the instructions are out there for how to do the install of apptaner um just there on the github and installing that from source and such is pretty simple or you know using the rpm if you want to go that way so one of the big points of the transition and the work that's been going on in kind of the engineering side of that thus far has been to ensure

that that backwards compatibility is pretty seamless um and so thus far that has pretty much gone well and um there's not too much else you have to look at there and do you have anything you'd want to add to that or is it pretty much seamless at this point nope you covered it and if there are any issues we'd love to hear about it um i think in the description there's a link to the apptuner github and so you can post an issue if during your migration you come across problems that need to be addressed very good one of the things that we keep running

across or i keep having brought up in my discussions and a lot of that is outside of just hpc but kind of in the enterprise space is what else can be done with singularity what are the use cases outside of hpc are we seeing so i would say any use case where you need to have um the ability to access a lot of the resources on the host so what most container systems goal is is to give you the view of your container as if it was a vm so as if it was isolated from the host and its own thing and so the container

process basically doesn't have any real concept of anything else on that machine other than what was exposed to it very intentionally whereas apptaner has the concept of integration over isolation so by default we do things like expose host file systems and host devices into the container to make them accessible because the core use case is really about getting the most out of the hardware that you're running your container on um i would say uh outside of hpc there's kind of i'm not sure which way to go with that question because uh when i think of hpc i usually think academic but there's a lot of

enterprise workloads that are moving towards more hpc style and some enterprises have always been in an hpc uh kind of arena that have been doing real world modeling um in order to uh do simulations of basically the world around it whether that's doing structural analysis or computational fluid dynamics those types of workloads have always been important outside of the academic community in order to do engineering work uh i would also say um apptaner has some interesting features related to signing in encryption where if your use case requires things like being able to guarantee that the container that you're using was created by the holder of

a pgp key you can do that with apptaner very easily what forrest showed in his demo was moving a public and private keyring and so that can be used with apptaner in order to check to see if a container image a sif image um which natively supports these types of signatures has been signed by a particular individual and whether it's been signed by an individual that you might require in order to run on your system so we have the concept of an execution control list related to signatures so an administrator could say i only want these identities to be able to run or to be

able to build containers that run on my system and then that will be enforced by obtainer itself there's also features around container encryption so we encrypt the container file system and all of the application data um encapsulated within that container and that allows you to have not only encryption uh in transit of the container image but also at rest on the node and it's only decrypted um within uh the memory of the node um when it's actually run for execution very nice i think there was another question that just popped up about there we go uh for migrating any other file directories need to be

migrated or changed for us as you're going through that or just that singularity directory um i am going to pass that off to the end those are the ones that i'm aware of you have to do and are you aware of anything else that you need to do just moving those system files and making sure that your um per user configuration is over um no what i'll do is clarify a little bit on the system administrator side of things so um the one main change for the uh apptaner configuration directory um i think it's called sysconfigure um in our like build system and our rpm

packaging um the actual like main configuration file uh was previously called singularity.conf and now it's called apptainer.com so you will need to do a file rename all the other files um are this named identically as they were for singularity installations and so you can actually just move those over directly without a rename so it seems like this whole thing is set up to be very easy to maintain so maintaining an app environment seems fairly straightforward am i am i off that that's one of the goals uh not only of this rename but of the project itself is to make the workload of the administrators administering

these clusters easier um so if there if there are sharp edges or things that are problematic for administrators we want to hear about that in order to help alleviate that so usually whenever i think of something being simple i also think of limitations that come along with that well are there limitations with what i can put into an app or container or a number of a number of applications i can put it what are the limitations of it i would say that the limitation is probably more practicality than anything there's not really a limit to what you can put inside of that file system it's

pretty extensible how you can define what you want the container to do on build and you can basically install things into it on more or less you know the same procedures that you'd be using on the host there are caveats that are related to how containers technically work but um for the most part you can basically do anything that you would do on the host so i personally have never met an application that i couldn't containerize with apptaner and like i said it comes down more into the end of uh you know what's going to be practical how um you know what's going to be

the best moving forward to be able to manage that container if it's got a lot of different software dependencies things that are going to have to be updated maintained stuff like that um it basically just yeah it comes down to practicality and how much maintaining you want to have to do of that container depending upon what exactly you put in it but no technical limit really to what you can put inside of one and to continue on that thread um one of the limitations i would say is not actually with what you can put into a container but how you can run the container so

apptaner is a linux container platform which means you need to have applications that are able to interact with a linux kernel for system calls so you can take like a windows application or a mac os application and put it inside of an obtainer and be able to expect it to run just like you want to be able to install those on windows and on on a linux host and expect them to run natively you would you could try using something like wine to do emulation um but for the most part uh users of hpc which is kind of our core crowd are already using linux

and so it's a very natural fit sure so making that statement really means it's very kernel dependent um it it's kernel component dependent in terms of the kernel flavor but with respect to kernel versions um within linux it's actually very portable um we recommend having a kernel of 318 or higher which is a relatively old kernel and the kernel itself as a project has done a great job of being very stable with the system call interface which is the reason why linux containers are able to exist in the form that they do so we have a question about environment variables can you can you see

those environment variables after your container or obtainer's been executed yes so uh apptaner will automatically forward environment variables from like uh so so the backup apptainers are usually spawned from a user shell or from like a batch script and so once they're once apptainer is called it'll actually take the environment that is currently existing where it was called and propagate that to the container environment um you can also like explicitly set environment variables that you only want to be exposed within the container by using a particular set of prefixes an app taner env underscore and then the environment variable name and the value but in

general and in the standard use case app will automatically forward environment variables to your container and you can use flags if you would like to prevent environment forwarding in order to stop that from happening all right so this is an interesting question i haven't ever really thought about this before but will there be an attainer hub kind of like docker hub singularity up or rv yeah so i think that's a good question and i think uh it really comes down to what are the needs of apptaner and of sifs in order to be stored and used by the user base so the nice thing about

the image format being a single file is you can use any form of storage that is able to handle blob storage essentially so singularityhub is i think in read-only archive mode right now so you can still pull images and run them but in terms of if you need a place to push stiff images you can use things like blob storage systems like s3 and you can also use oci registries that support the oci artifact specification which um is essentially a way of using oci artifacts as arbitrary blob storage and so that fits nicely with um kind of current infrastructure if a registry supports that um

api then you can store both your docker images and your singularity images in the same registry side by side all right so i know forrest you talked about mpi applications a little bit earlier when we start looking at running apptainer and and dealing with file systems how does that work can you use external file systems or will it handle external file systems most definitely and this kind of ties in a little bit with what we were saying about that um integration versus isolation approach um apptaner is basically sitting on your server as a single runtime um there's no you know as we've talked about the

demon based system anything like that that images have to be you know built against it's basically just the single obtainer runtime that runs the single um singularity image file container files um and so when you're actually using apptainer on a server you can basically just treat your apptaner containers as just you know the same as you would any other file on that and run those with that runtime so and then as i said that also kind of gets into integration of our isolation obtainer as we've said is built to interact with that external file system um you know with regards to host devices and host

capabilities host software stack stuff like that there's an ability to bind files in for example from that host file system if you need to do that and those can appear at um container at a location in the container that you'd like them to be at um so obtainer in general doesn't really have a problem dealing with external file systems it's really meant to integrate with those external file systems so that's one of the primary points of it and i'll just add on to that to say that by default singularity mounts the user home directory into the container so for usual um usual work with hpc

resources that user home directory is typically a network storage system and there's also usually a slash share and so singularity will mount um like your home directory and so you'll have all of your user configs that you would normally have on that node inside of the container and so it'll usually just feel like you've swapped your user space operating system when you use a singularity container or afternoon or container saying the raw saying the wrong name i have a really big only one yeah still new it happens really really quickly and i have something that i can show that off kind of being the same

user inside and outside of the container if we'd like to do that real quick yep that kind of leads into the next topic i want to get into is kind of that multi-tenancy how does this work in a multi-tenant hpc environment yeah so just to kind of show you what maybe a typical flow would look like for getting a container from some type of registry out there onto your server and then being able to use it without tainer i'll just go ahead and show you we'll do just something really simple here an ubuntu container so we'll do ubuntu focal and let's go ahead and pull

that and and while he's pulling that i'll just say that what what's happening right now is he's actually pulling a docker container from docker hub the default ubuntu um image or i guess the focal tag and in the background we're quickly building that into a sif and caching it within his home directory in order to use it as a sif for future commands so you can use any any oci image to use as a source for an obtainer container and one big thing to note about when we're doing this um is that there is no concept of layers essentially inside of an apptainer you know

while docker and containers from other runtimes are built as kind of a layer format um obtainer essentially takes all those layers and squashes them together into that single squash fs container file system um so there's no concept of layers in it and it kind of you know decreases your attack plane there for you know cyber security and other purposes so that's useful but you can see that this has gone ahead and finished we've created a sif if i do an ls you can see that we have ubuntu focal over here i'll go ahead and do really quickly just cap this text file here so you

can see what's in that if i go ahead and do oops i'll start typing singularity uh if i go ahead and do aptainer shell and then i put in this container here to get a shell into this container you'll see that i get an initial error because i'm sitting on a vm and this happens really quickly i'll do cat etsy os release so you can see that i'm here on rocky if i do a who am i you can see that i am test my just test user on this vm if i go ahead and do obtainer shell you'll see that i'm now inside of

this container and i have a shell into it if i do cat etsy os release you can see that we are now on ubuntu if i do an ls you can see that i can still access all of my standard files here i can cap that right there if i do who am i you'll see that i'm still test in here and i can even do things like for example this is more test text and append that to this file that i have here and then i can even do this you'll see that those are both visible inside of the container here at this file

right here so you'll see we've managed to append that successfully and we've created this other file successfully and if i exit out of the container you can see that both of those files are also present and i can do [Music] this to see the file that i created right then so we only expect one line and then checking the other one you can see that we have both the original line and the one that i added there so point being here as we discussed in the multi-tenant environment of an hpc cluster and the standard way that obtainer runs is to make the user inside of

the container the same user as outside of the container and preserve all those access controls and stuff like that so if i go once again just to show you if i go into this container and i try to say cd slash root i get permission denied if i try to you know do this you can see once again permission denied so i remain my same user with my same user's permissions inside of the container um there's no elevation or anything to work out there so in the multi-tenant environment of an hpc cluster that's how obtainer works to preserve um access controls and uh make it

a viable option for people to deploy their workloads with and one thing i'll add there is just that the processes that are spawned by obtainer are using a um a process uh i don't know the right right word for it but we set a parameter called pr no new privs which basically means that that process and any descendant processes have no ability to gain any additional privilege on the system than than they currently have and typically uh this um actually makes running any kind of application inside of a inside of an app or container safer than if you ran it just as your user on

that system because sometimes you might have uh capabilities assigned or the ability to use uid programs and things like that so this actually just blocks all escalation the recent for example pk exec vulnerability that came out when tested in obtainer um as i believe we have a video out there of um trying to yeah exploit that inside of an obtainer is just shut down natively because of its security model so there's a real world example of how um obtainer kind of increases the security on your system beyond that of which that's available normally so one of the questions that came in and i'm not sure

i understand the question fully but it's asking uh talking about build remote will there be that one assuming will there be the ability to build remote so the um the api so what that was was essentially an api that is not um not widely adopted within the community and to the point where we can make an open standard it's solely for a commercial organization's cloud platform and as a part of our migration to our um yeah migration to the linux foundation um we need to remove proprietary apis from our application and so we had to remove that one in order to be compliant i would

say that most of the benefits of remote build are actually something that you can replicate with what we call our fake root feature so on standard um installations of apptaner when you build you can use the fakeroot flag and what this will do is allow you to run your build as if you were a root user inside the build environment when you're still actually not on the system so it's still safe to do because the primary use case of the remote builder was to do container definition builds which required you to be root on the system in order for things like package managers to properly

work since they do usually a straight user id check to make sure that they're zero fakeru allows these types of builds to progress very good thank you i know this one we talked about this forest i know you and i talked about this one before but does adtainers support or does that support for gpus absolutely um gpus are one of the pieces of hardware that obtainer is built to support um because those are a massive high performance computing use case so at the moment there's native support inside of obtainer for both nvidia and amd gpus when we were looking at those system configuration files earlier

you may have noticed an nv lib list and a rockham lib list file those are maintained those are essentially what the container needs in order to be able to support gpus inside of it that's a list of libraries that essentially have to be bound to the container when you want to run a gpu application obtainer has a specific flag dash dash nv that brings for example those nvidia libraries and stuff into the container to make them available for applications that need them so yeah obtainer absolutely supports gpus that's a huge high performance computing use case so it even has native support in it for the

two major gpu manufacturers out there that's great so ian i have another question for you since i have you here uh is there anything specific that i have to do to obtain or to get that involved with my hpc job scheduler oh from uh from using it with like a batch scheduler like serum or pbs or those types of things so um not really you just need to include those inside of your batch scripts in order to take whatever application you would normally run within your batch system and basically add the uh aptainer exec with the con with the container image you want to run

inside of your scripts and that will automatically or go ahead and spawn those containers on the fly as if you would spawn any normal application when your batch scheduler goes and runs that script on a node very nice thank you so now that singularity is there anything else that's going to change anything to look forward to sure so um i i would say the main new feature uh is currently an experimental feature and it's going to be within uh v1 of apptaner um it's currently in the release candidates as well um that are that are out right now um and that's the ability to checkpoint

uh container instances using a project called dmtcp um so this is a project that allows transparent checkpointing for um dynamically linked applications and so this will give us the ability to do things like run a container instance on one node and if for some reason that node uh that that container job either needs to be migrated um because maybe that node has an issue and um is is there's concern that it might fail during part of its job you could checkpoint that uh container instance and then go ahead and start that container instance on another node assuming they both have uh the same shared storage

system and your home directory is available on both of those nodes very exciting and and kind of um you know broadly with the future of obtainer there's a road map out there that kind of describes some of the features that we're looking at um i know for example i'm really excited to see kind of increased um ability to use apptaner with like some more specialized high performance computing hardware and software and such that's coming out right now um so i know that obtainer has a really really kind of exciting feature ahead of it with regards to what we're doing with high performance computing technology so

kind of more broadly on the roadmap they're very excited to see where that goes and how some of our new features um you know that we've kind of been talking about on our roadmap and stuff get implemented one of the questions i have for you guys is why did singularity get renamed to apptaner and then moved into the linux foundation what did that achieve sure so the the rename is actually a direct consequence of the decision to move into linux foundation so when the opportunity arose to move into the linux foundation uh basically um we asked to reach out to the community and said hey

if you want to be involved with the future of this project please get back to us because we wanted to be able to talk about um this kind of move um not in a public forum not like super secret but we wanted not to be public in order to like generate hype at that point so we wanted to get those involved within the community and um invested in the future of the project to be able to be involved in the decision making process of that move and so we went ahead and sent out um basically a document i think it was that articulated what would

be necessary in order to join the linux foundation and one of those things was a container or a rename of the project because the singularity name itself is something from pop culture and is impossible to trademark um i'm sure that makes sense to most people so we needed to have a name that the linux foundation could hold a trademark for in order to protect the project so we asked for uh suggestions for future names and what they thought of the move and we when we got all the feedback back it was clear that moving to linux foundation was the right move and so we had

to do the hardest thing programmers can do name something and uh so we we uh sent out a poll to those those community members and app painter one and so that's how we ended up with apptaner within the linux foundation and so i'll say the reason for moving into the linux foundation a lot of the benefits are really about ensuring that the project stays within the open source community and can't be controlled by commercial entity linux foundation does a great job of ensuring projects are open source projects and our um any any interested contributors or parties can be a part of those communities and so

that's really important to the apptaner community and it also gives us the ability to cross-pollinate with some of the projects within the linux foundation or under the linux foundation umbrella within the hpc scope like we would love to be closer with projects like openhpc as well as within just the general container ecosystem which is primarily kind of cloud dominated and so organizations like the cncf have a lot of interesting initiatives and projects and we would love to be have those as potential integrations excellent so you mentioned the community and and people being involved in that how do people get involved in the app taner community

sure so i think in the description there is a link to our website um the github repository and our slack and so i think the most accessible way for most people is to just join that slack and say hi say say uh what you're interested in if you have any questions about the project you're always welcome to ask questions in there if you have issues where you're running into problems with um the pro the obtainer program itself you can go ahead and either ask those questions within the slack channel but you can also post issues within our github repository um so that that's that's kind

of where we do all of our tracking of issues and how and make sure things get fixed and things like that so that's that's a better location for placing an issue itself excellent so i don't know if we have any more questions out there if you have a question post it see if we can answer it real quick while i have these guys time and if we don't i just want to thank you for joining thanks ian thanks for us for spending some time with us um of course you have anything else you want to show or talk about um that uh you know with

that increased push for containers in the cloud uh and kind of that discussion of you know containers and job schedulers and such like that um not to imply too much but you know job schedulers and hpc uh you know it's traditionally kind of a field that containers have struggled to go into for the reasons that we've discussed here the security model the specific needs of the environment and stuff um so i just want to really quickly point out that uh you know with this new revolution and hpc that's going on i'm the movement to containers and everything something that we are really big on here

at ciq is kind of you know mass orchestration and such of those containers in that hpc environment um and to that end we have something very big that we're working on in that regard um and so we're very excited to kind of bring that to the broader market um so keep an eye out for that out there so we just had one pop in talking about our asking about new features and updates and obtainer over singularity i think we kind of touched on that a little bit with the being able to basically suspend a container and move it if you needed to is there anything

else in that you can think about think of no i would just say that um one of the things to look at for apptaner is that functionality overall is going to be improved because if you're using one of the older versions of singularity and haven't migrated yet all active development and bug fixes for the projects is going to be going into apptaner so if you have any issues apptainer is more likely to contain the fix for for that bug excellent well guys if we don't have any more questions we will wrap this one up i appreciate you coming looking forward to next time i think

probably two weeks from now we'll have another topic for you so ian appreciate the time for us as always it's good to see you guys and thanks for thanks for joining don't forget to like and subscribe appreciate it thank you all bye bye [Music] do [Music] [Music] [Music] you

Built for scale. Chosen by the world’s best.

2.75M+

Rocky Linux instances

Being used world wide

90%

Of fortune 100 companies

Use CIQ supported technologies

250k

Avg. monthly downloads

Rocky Linux

Have questions about your infrastructure?

Talk to a CIQ engineer about Rocky Linux, HPC, and AI infrastructure.

Talk to an Expert