
This webinar will demonstrate Apptainer with commonly used cloud containers and artifact registries. Many major clouds have support for storing Apptainer in their registry solutions through OCI Artifacts and OCI Registries As Storage (ORAS), allowing you to easily use Apptainer to interact with your SIFs in the cloud. Join us to learn more!
Webinar Synopsis:
-
Forrest Burt's Background in HPC
-
Dave Godlove's Experience with CIQ and Apptainer
-
Brian Phan's Workflow Experience in HPC
-
Rose Stein's Sales Work With CIQ
-
Why is Forrest Burt so Excited By Containerization?
-
Why is Cloud Apptainer so Important?
-
How to Get Involved With Apptainer
-
Containers are a Great Way to Learn Linux
-
What Does Open Source Mean for Apptainer?
-
GCP Container Registry Interface Live Demo
-
The History of Docker Support in Apptainer
-
Storing SIF Files in the Cloud
-
How to Obtain Authorization Tokens in GCP
-
Does Apptainer Have Any Container File Size Limits?
-
Amazon AWS Apptainer Live Demo
-
What Happens if You Don't Clear Your Cache Before Pulling From a Different Registry?
-
Does Every Registry Follow the OCI Standard?
-
What is the Origin Story of ORAS?
-
Is It Possible to Automate Pushing and Pulling From Cache?
-
What is Brian Phan Working on at CIQ Right Now?
-
Generating Access Tokens for Apptainer With GitLab
-
Why Does Pushing SIF Files To Registries Matter?
-
Using Mirrors to Verify Authentication Security
-
Using ORAS to Bypass Mirrors For Software Supply Chain Security
-
How to Perform Fingerprint Verification With Docker Hub
-
How New is Uploading SIF Files to the Cloud?
-
Does Apptainer Work With Oracle Cloud?
-
What is the Most Exciting Thing About
Speakers:
-
Zane Hamilton, Senior Vice President - Sales, CIQ
-
Rose Stein, Solutions Engineer, CIQ
-
Forrest Burt, High Performance Systems Computing Engineer, CIQ
-
Brian Phan, Solutions Architect, CIQ
-
Dave Godlove, Solutions Architect, 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:
Hello, Rose. How are you?
Rose Stein:
I'm good. I was like, do I have time to get my Rocky earrings on?
Zane Hamilton:
Just enough time. Just enough time.
Rose Stein:
Just one. So, I'll just point this way the whole time.
Zane Hamilton:
There you go. We'll take it. Welcome everyone to another CIQ webinar. We appreciate you joining. This week we're talking about cloud, right Rose.
Rose Stein:
We are talking about cloud, specifically around Apptainer. So this is very exciting, and I think we're going to have to do a little explanation of what exactly this means. But, I'm very excited. I think Forrest is going to join us. There he is. And Brain and Dave!
Zane Hamilton:
The whole crew. Perfect. Well, welcome guys. I'm going to go around and do introductions real quick. I think you've all been on here enough that people probably know who you are, but for those who are new, we appreciate you joining. Let's introduce ourselves. Forrest.
Forrest Burt:
Whoops. There we go. Hit the mute button.
Zane Hamilton:
Wrong button.
Forrest Burt's Background in HPC [6:03]
Forrest Burt:
Good morning everyone. My name is Forrest Burt. I'm an HPC systems engineer here at CIQ. I've been with CIQ for about two years. I come out of the academic HPC sphere where I worked with academic HPC and the National Labs-sphere of that type of thing. So excited to be here on the webinar today and excited to be talking about Apptainer.
Zane Hamilton:
Great. Thank you Forrest. Dave, welcome back. Good to see you
Dave Godlove's Experience with CIQ and Apptainer [6:26]
Dave Godlove:
Hey, good to see you too, Zane. Good to see you, Rose, everybody. I did not have time to put my Rocky earrings in. I apologize. I'm Dave Godlove. I've got a long history as a research scientist and used to work at Biowulf at the NIH. I've been around the Apptainer community for quite some time. I do participate in a lot of these webinars. And I'm a solutions architect at CIQ.
Zane Hamilton:
Thank you, Dave. Brian.
Brian Phan's Workflow Experience in HPC [7:03]
Brian Phan:
Hey everyone. Brian Phan here. I'm a solutions architect here at CIQ. My background is in HPC administration and architecture, and I have workflow experience across various verticals of science, from automotive to aerospace to genomics. Happy to be back on this webinar and excited to see the demos that Dave and Forrest have prepared.
Zane Hamilton:
Thank you Brian. I see Brian, you didn't get your Rocky earrings on either, so I guess we just missed out.
Rose Stein:
They're in the mail, guys. They're in the mail. Alright. We'll get you a little clip on ones. They'll be cute.
Zane Hamilton:
So, Rose, it's been a while since you've introduced yourself. Why don't you introduce yourself as well?
Rose Stein's Sales Work With CIQ [7:48]
Rose Stein:
Hey, everybody. My name is Rose Stein. I work at CIQ. Zane is actually my boss. He does manage people. And so, we help in making sure that people who are wanting our services are able to get the services. So, we're like the in between, right? They can call it sales. Some people really jive with that word, and other people don't really, but someone's gotta do it, right? Somebody has to take the customer and bring them into the company and make sure they're getting all the incredible work that Forrest and Brian and Dave are doing. So, we're in between people there, and it's very exciting. The other day we had a customer well, a potential customer at first, now they are a customer. And we were having a conversation with them about what it is that we provide and what it is that we do. And the guy was just like silent for a couple minutes and then he said, you just solved all my problems.
Zane Hamilton:
Those are good conversations.
Rose Stein:
It was such a good conversation. So this is actually one of those things when, Forrest, I hope that you are willing, I am putting you on the spot. I didn't tell you this ahead of time, but I would love for you just to share your excitement of a story that you shared with me around, I think it was 2019, you said it was when you first discovered containers and what you were thinking about them. Oh, I think you're on mute. Can't hear you.
Zane Hamilton:
Can't hear you. Oh, you broke his mic.
Rose Stein:
Dang.
Zane Hamilton:
Now you're on mute.
Forrest Burt:
How about now?
Rose Stein:
There we are.
Why is Forrest Burt so Excited By Containerization? [9:40]
Forrest Burt:
Okay, perfect. That was odd. Rose, if I'm thinking of the same story. The idea of containerization and using that as like a system. This is obviously an idea that has been massively expanded on and architected and was being thought of in places and other places at the same time. But I remember shortly after getting into containers one of the biggest things I started to think about with them was the ability to do something similar to what we've expanded on at CIQ with like the Fuzzball side of things. But just like in my very new to HPC, very new to Linux type way, I just remember getting so excited about what people could do with containers and how it improved module file systems and improved what I was doing with building software.
My users were able to utilize containers. Like I said, instead of module files, I was able to build and deploy software a lot easier. I was suddenly just like, wow, Singularity, which is what it was at the time. But Apptainer, this is incredible, to be able to actually work with the system at this level. And then to be able to do away with some of these outdated paradigms that were very annoying not to deal with as a SysAdmin. So, I just remember sketching out at the time this little, CM shared containers of a different type of architecture which was, like I said, pretty crude for the time. But, it's very cool to have seen at CIQ, especially with the release of Fuzzball, those types of ideas that other people were thinking of at the same time. And the containers are the way that whole sphere is going. So, I've been very pleased to see, like I said, other people were thinking of that and that we've been able to expand on those types of concepts so far at CIQ with Fuzzball Orchestrate and our different container based paradigms like that. With all the work that we do around Apptainer, with what we've done with Warewulf. It's very cool just to continue to see containers, especially the Apptainer sphere playing such a huge role in the future of HPC.
Zane Hamilton:
Thanks for the story Forrest. So, I feel like we bring this up every time, but it's interesting to me and I want to make sure that everybody that is watching this, especially for the first time that's new to Apptainer and Singularity. I'm going to ask you this question, Dave, can you point out, when we talk about containers, a lot of people think of Docker. Can you just high level, real quick, tell us the differences between Apptainer and Docker and why?
What is the Difference Between Apptainer and Docker? [12:18]
Dave Godlove:
I'll try to be quick about it, like you said. So the history, and I talk about this a lot, the history of Apptainer really is that people started to come to HPC, Sys Admins and staff scientists like me and like Greg and like other folks around 2015 or so, and started saying, "Hey, I need you to install Docker on our HPC systems." And so we found that for security purposes at the time, Docker was not up to snuff to be installed on an HPC system. It just doesn't have a security model that works well with a multi-tenant system, basically. So, if you have multiple users, and some of them don't have root access, then it doesn't really work to install Dockers. So Greg thought, well I would like to design a container platform that works with multi-tenant systems.
And so while I'm at it, why don't I just go ahead and make it as HPC friendly as possible? Cause I'm targeting HPC. So that's one of the big differences right off the bat, is that the security model's different, the architecture is different at a really fundamental level, and it was targeted specifically to HPC users. So, it's got a lot of HPC goodness associated with it. And then the other big difference, which is something that we're going to be talking about, I think a lot today, is the format, the container format. So, it is my understanding, and I've repeated this, whether it's correct or not several times, but I think that is one of the big reasons. So of course Apptainer used to be called Singularity, and one of the big reasons that Greg named it Singularity was because of the single file format the containers come in.
So instead of having a whole bunch of tarballs that come in and have to be stitched together as layers into a single coherent file system at runtime, you've got a single image file that's wrapped up in something that we called a SIF, a Singularity image format file. And that is how your container comes in and you use it and you can move it around and do things like that. So that's a really, really big difference. And it's something we'll be talking about today, I think as we talk about cloud support.
Why is Cloud Apptainer so Important? [14:43]
Zane Hamilton:
So I know the topic today is cloud, and we're talking about Singularity. How does that play with the cloud? Why is that important?
Forrest Burt:
So when it comes to Apptainer in the cloud, being able to utilize the common registry solutions and stuff like that are provided by the different clouds out there gives you the ability to, if you've already got a bunch of architecture, we found in our investigation for this webinar that container works on most of the major clouds. And so being able to utilize these cloud container registries alongside your existing architecture or to supplement if you're not up in the cloud a ton, to be able to bring container registries to your lab or whatever, if you haven't already had them. Being able to utilize all of these cloud registries for Apptainer just makes it really easy to push containers, pull containers in the same way that you would imagine with the Docker based sphere of things. And, like I said, it really gives you a lot of ability to move around between different clouds, between different architectures and redistribute those Apptainers that you might have out there very easily.
Rose Stein:
So I think that we're just about ready to see it, right. Talking about it is nice and beautiful and wonderful, but we want to see it. But just before that, I know that people get really excited about containers, just like you did back in 2019 Forrest when you first found containers, you were like, whoa, cool! The story that Forrest told me, he was like, "...and I got my whiteboard and I was there!" I imagined him with two, like a pen in each hand, doing things like this and just being amazing, right? And figuring out all the things that you can do with containers. And some people might not already be in the mix. So, is the Slack channel, the Apptainer Slack channel, the best way to begin to get involved and jump in and ask questions and things like that?
How to Get Involved With Apptainer [16:50]
Forrest Burt:
That's a great place to hop in. Okay. If anyone else has any other suggestions, definitely feel free to throw them out there. I think the Apptainer website Apptainer.org has a listing of all of the different community spaces and things like that are associated with Apptainer. But, at the moment, a lot of the activity is centered around Slack. So feel free to join us.
Rose Stein:
Awesome.
Zane Hamilton:
I will say it's very well documented and there are a lot of people that contributed to that documentation, and we really appreciate it. But if you look at it pretty close, Dave's written a lot of it.
Rose Stein:
Dave's the man, go find him in there.
Containers are a Great Way to Learn Linux [17:30]
Dave Godlove:
Well, I was just going to jump in too and say that another thing that I wanted to highlight for people who are new to containers, this came up. So, a couple of us were just at the Rocky Mountain Advanced Computing Consortium or RMAC meeting, and this came up several times when we were talking to people. So, if you're new to containers, if you're not really, maybe you're newish to Linux, or maybe you're not very newish, but you've not used it extensively beyond just SSH and SCP and moving files around, stuff like that. If you haven't used Linux extensively, you might be a little intimidated. Do you get into containers because of that? And I want to say that you should really feel the total opposite way.
Containers are a great way to learn Linux. And this is one of the cool things about containers that new folks who are just new to the area find, is that a lot of times when you're in a Linux system and you're messing around, there's like stuff that you're scared to mess with or touch because you become root and then you start doing stuff and maybe I'm going to mess something up. But if you're in a container, delete files, mess stuff up, try to install things in weird ways, do experiments and break your containers. And this is a great way to just learn Linux and to get your feet under you and start to get a feel for how things work and what works and what doesn't and so on. So I think that... Don't be intimidated if you're new to Linux, because that's actually a great time to start learning about containers.
What Does Open Source Mean for Apptainer? [19:13]
Rose Stein:
I love that. Thanks for sharing that. And just to be clear too, Apptainer is its own thing and it's totally open source. So Dave, obviously you work at CIQ, but you also spend your some off time helping and supporting the open source community, which is Apptainer. So when he says, go and grab it and play with it, go do that, right? It's all open source, it's available for you to do. And CIQ as a company, we provide an opportunity for people to have professional support on top of just grabbing the open source files and playing with them. If they want something actually built in a specific way or any of that stuff. So, sometimes people ask about the clarity of what that means. So thank you for that. And I think we're ready. And who's first?
Forrest Burt:
All right, everyone. So, like I said, this is Cloud Day with Apptainer. We are just going to be going over how to use Apptainer with the various different cloud container registries and stuff like that are out there. Just to situate everyone a little bit more, a registry in this case is a place where you can put a container and store it up in the cloud and then be able to pull that back out with your credentials for that registry. Registry is essentially the de facto term for container storage. They are more or less synonymous in the cloud. You might see that we also talk about artifact registries, which are sometimes a little bit different. An artifact registry is sometimes meant to hold other artifacts than just containers like Helton charts, things like that.
So, I'll make the distinction when it's there, but just so everyone knows, a registry is more or less just like a container storage type thing. So most major clouds out there in different places offer some way to do a container registry. They offer some type of solution around that. What we're going to be going through today, like I said, is showing how this interfaces with a few of the major clouds. So we're going to go over GCP, AWS, Azure, GitLab. Dave is doing DockerHub to show how SIFs are supported there these days. And then we're going to do OCI, so the Oracle Cloud Infrastructure. And then at the very end we'll do a very quick GCP demo on some resources out there on our GCP CIQ optimized Rocky Linux that we have up there. My apologies.
Zane Hamilton:
I thought you'd refer to the Dave Cloud for a minute. You threw Dave out there.
Forrest Burt:
Did I? The Dave Cloud?
Zane Hamilton:
No, just kidding.
Forrest Burt:
My apologies if I did. There's a lot of clouds for a moment here. There's a cloud storm going on at my window. That's fantastic. So, let me share what I've got here. Like I said, we're going to go over GCP, AWS, Azure, GitLab, Docker Hub, OCI, and then a quick GP demo at the end. So I'll go ahead and share my screen and we'll go ahead and start with the GCP artifact registry. So just to show you what we're looking at here, I have pushed into this registry. Can everyone see my screen?
Zane Hamilton:
We can.
Forrest Burt:
Fantastic.
Zane Hamilton:
Okay. At least I can.
GCP Container Registry Interface Live Demo [22:32]
Forrest Burt:
Fantastic. Okay. So what we're looking at here is the GCP Container Registry Interface. So this is the GCP Artifact Registry Interface. So this is an artifact registry that we've created on GCP. It's called containers. I have, if I go back here, you can see the full list of them, but I don't exactly want to do that. So there's a whole bunch of other containers that are also stored in this registry. Docker containers and Apptainer SIFs together. So you can see I've got this container demo container that I've gone ahead and pushed here. If we go and look at this we can see that this should be an ORAS image that gets pushed up there, but sometimes the tagging on it gets a little bit odd. But this is an ORAS type image that we have pushed up here.
What is OCI and ORAS? [23:20]
Dave Godlove:
We might have to time out at some point, maybe not right now, sorry. But at some point we might have to talk a little bit about what things like OCI and ORAS mean.
Forrest Burt:
Dave, if we want to jump into that right now, that'd probably be a good time if we want to really quickly explain OCI and ORAS and that type of thing, because a lot of these registries that we're using are based on that concept. Just to preface the discussion a little bit, we have OCI type images, and then we have ORAS, which is a way of using these container SIFs with OCI registries. But then I'll let you explain that so I don't confuse things.
Dave Godlove:
Sorry to interrupt. I should have jumped in sooner and said something. So all right. So, a few acronyms to be aware of. We've already talked about SIF Singularity image format. SIF is an image, it's basically a file system image saved with some metadata in one file. OCI means the Open Container Initiative. And way, way back in the day around 2015 or so, somewhere in there, the company Docker decided to start a consortium called the Open Container Initiative to set up a bunch of standards for how containers should be stored and run and all that kind of stuff. And they basically started the standard based on Docker. And so that's what the Open Container initiative means. OCI standards cover the container format, the container runtime, and now most recently registries as well. So there's a standard for how you store containers online, and we're going to be talking a lot about OCI registries today. Oh, Rose has got her hand up.
Rose Stein:
So, this explains why more times than not, you're messing around with Apptainer and you see Docker, right? And you see, it's a Docker pool or go get from Docker, Docker Hub, or Docker something or other. And people are like, wait, if I'm using Apptainer, why does it say Docker? And this is why.
The History of Docker Support in Apptainer [25:37]
Dave Godlove:
Right. So a long time ago, shortly after Apptainer became a thing in its previous incarnation, Singularity, one of the community members, and I'm going to give her a shout out because she really helped out quite a lot. Vanessa Socket said, wouldn't it be cool if we could download OCI containers directly from places like Docker Hub and run them in Apptainer then Singularity. And so she submitted a bunch of Python code that allowed us to do just that. And so that was hugely influential and a big bang and really made the container take off. Because now instead of building all your own containers, you could just go get them. So fast forward. And so then I covered OCI a little bit and what that means.
The last acronym I wanted to cover was ORAS. So fast forward a little bit, a bunch of people in the container community got together and said, wouldn't it be cool if we could use an OCI registry as storage - ORAS, and so wouldn't it be cool if we could just push random data, any kind of a data blob up to an OCI registry. And some folks actually from Microsoft talked to some people in the Singularity community and said, wouldn't that be cool if Singularity, and now Apptainer, supports that as a protocol that you can use to store SIF containers. So that hopefully loops it all together. So now, it used to be that people would build their containers using Docker files, push them to someplace like Docker Hub, where they could get at them easily, and then they would pull them with Apptainer and transfer them from layers into a SIF at that point in time. Now, with ORAS, it's possible, as long as the registry supports it, with I assume all the registries do now, it's possible to just push your container directly up to an OCI registry as a SIF and take advantage of all the great things that SIF offers, which hopefully we'll be talking a little bit about later on. Okay. Sorry, level set terminology.
Zane Hamilton:
It's perfect. Thank you Dave.
Storing SIF Files in the Cloud [27:57]
Forrest Burt:
Thank you very much Dave. Exactly. So, what we're going to be seeing here is leveraging all that tech that Dave just discussed in order to be able to store these SIFs in these cloud registries. So to switch back to my screen sharing here, we can examine this image. For whatever reason, when we look at this image in the artifact registry, it shows up as a Docker format. So I don't know if they're wrapping this as something like that on the other side, but this is a SIF that we've stored up here in the GCP artifact registry. You'll notice so we can get a pull tag to it with this, this, and this. So I'm going to go ahead and share a terminal really quickly and I'll show you all how we can pull down the tag that we have here for this. You can see that we've tagged this stable, so we can imagine this is maybe like a stable release version of our application or something like that. So we'll go ahead. I'm managing the fact that I have to remotely log into like five different container registries here and sometimes the credentials get a little mundged. So, bear with me if I have to drop off, not drop off, but drop off screen sharing for a second to set up a credential in the background. I think we should be good, but we'll see how it goes here.
Zane Hamilton:
Live demos Forrest…
Forrest Burt:
Always. Let's see here. Let's see if I can make that a bit bigger.
Rose Stein:
There you go. A little more. Nice. Thank you.
How to Obtain Authorization Tokens in GCP [29:39]
Forrest Burt:
Okay, there we go. Awesome. Okay, so we're here in the terminal. In order to go ahead and interact with this GCP registry I have got to do a Apptainer remote login -u oauth2accesstoken. And we're going to paste in the name of this registry. So let me grab that really quickly, pull the tag and then I'll back a little bit.
But when I do this, I'm going to, in another screen, just do a quick GCloud off print access token in order to get a temporary access token into this registry. I believe my authentication should already be set up but I'll just do this just to show how the login works on the command line. So when we do obtain a remote login, we have to provide -u, which gives us a username, and then we have to provide the registry here at the end. So this is the URL to it. You'll notice that we're using the ORAS spec. That means that we want Apptainer to treat this as a registry that we're going to put SIFs into. So we'll go ahead and do this, get our password token request, and I'll paste in my GCloud auth print access token. I'll get that token stored there. If I want to go ahead and pull that container.
I can go ahead and use this right here. So just referring directly to the container pulls the URL that we got from the top of that. So just that CIQ/SA/containers, and then the name of the container that we put into the registry as with the tag. So we can go ahead and run this and it's all the same container that I've put all around these. So if I forget to do something like a container cache clean between them and it says using cached ORAS image, that's just because it is detecting that it's got the same image coming down from that registry. But I will try to remember to obtain her cache.
Clean each one of these so we can see a clean pole. So we'll go ahead and do this and we'll see if this will start to download an ORAS image. This is pretty small, just like a hundred megabytes or so. So we should see this finished pretty fast. But you see, we get that indication that we're pulling down an ORAS image. We get that right there. This image is just a really simple Python type image. It's just what I built with this container.def here. So we should be able to go ahead and do a container shell demo of this and then we can do our python3.
So that's the basic of the container that we're actually, or the the basic idea of the container that we're pulling down here. I'm going to go ahead and remove that each time so it's not clobbering itself. What happens is we want to push a container up to GCP. We can do that just as easily. Just go over here, paste this in, and we're just doing Apptainer push and then the name of the container. And we're going to push that to the latest tag. So say we have a new version of our application that we want to push out for testing we can tag that latest and go ahead and push and upload complete. So that finishes pretty fast. And when we go back to this page over here, we should now be able to see that we have a new tag on that image.
Does Apptainer Have Any Container File Size Limits? [33:02]
Zane Hamilton:
While you're pulling that up for us, I know some of our customers have some fairly large container images and I'm sure that some of the container registries have limits on size, but Apptainer doesn't care about the size of the container. Correct?
Forrest Burt:
Can you say it one more time, Zane.
Zane Hamilton:
So I know we have some customers that have some fairly large containers, like several gigs. There's no limitation or no size limitation on Apptainer. It doesn't care how big.
Forrest Burt:
Nope, absolutely not. You can build essentially an arbitrarily large container out to the limits of the performance of your file system and the storage space that you have. There's strategy there, you probably don't want to build a mono container that's hundreds of gigabytes in size, because that becomes very unwieldy to move around versus the concept of containers, which is to have in a lot of cases a single app just kept in a container. But it can do any size. When you build an container, if you're like building from an OCI image, it takes all the layers that you put into a Docker container, squashes them together into one file system with MakeSquashFS, and then you just have this essentially SquashFS image there that represents the rest of the container. So I've gone ahead and pushed this unaware that pushing the same container is actually just going to retag it with the same tag. So you can see that as I've gone ahead and pushed that up I've got now the latest tag applied there. But if there was a material difference between those two containers, we would see like for example.
For example, another container that we have here that's also a SIF. We have a number of different versions here as things have been pulled, and then we just maintain a stable version of it. That's the latest one. So that's the Google Artifact Registry. You can see we can store SIFs there, we can move things around. We'll go ahead and switch to the next cloud that we're going to look at, which is the AWS ECR. So this is the Elastic Container Registry that AWS provides so we'll go into here. So some of these places do the registry set up just a little bit differently. But I'll explain what we're looking at here. So we're in our Amazon Elastic Container Registry. I've got our Apptainer demo container here. And you can see we've got the stable image tag applied there, just like we did in the previous one. You're going to see that we basically have that same thing across all of these clouds. We have in Azure, a stable one in Oracle we have a stable one. And then in GitLab we also have a stable one. But here in the ECR you can see we have this artifact type other which is just indicating that it's not exactly a Docker container. It's something different. In this case it's a SIF. So you can see that we've got one waiting there. I'll go back to the command line.
Amazon AWS Apptainer Live Demo [36:02]
And we will go ahead and do an Azure deal. Where's that? There we go. Or sorry, not Azure. I may have misspoken an AWS deal. So in order to get in here I'm going to just go ahead and do this right here. So just AWS ECR get login for the region. And then I'm just piping that into Apptainer. I need this right here.
Oh, no, there, it's, I'm just going to copy it. I also need, of course, the actual URL that we're going to. So there's that right there. So, AWS ECR gets the login password region et cetera. That basically just gets you like a token that you can use to log into the ECR. We're going to pipe that through to Apptainer and just use the password standard in the option there. The username AWS you can find the username that you're supposed to be using generally in like the pulling instructions and tagging instructions for the registry. So a lot of times that'll tell you there's like a standardized username like you saw with GCP. It was oauth2accesstoken. With AWS it's AWS with Azure it's a bunch of zeros. So you'll see that generally they have something like that. So that's why in this case we have that username. And then, like I said, I don't want to reveal this token, so I'm just going to use this password coming in from standard in we'll go ahead and do this. And we once again got the token stored confirming that we have a good login.
I can go ahead and like I did before pulling down this stable release. I've got there. So I go ahead and pull down the stable release, copy this.
There we go. So I should be able to pull down the stable from this. I'm going to see if we get downloaded ORAS images. I'm probably, let's see, we'll wait a moment. There we go. We can go back and go into this and one's again so that you can see, we can pull that down from the AWS ECR there. We can also push a new tag. Like I said before this might just cause a duplication because I didn't realize that it's going to just do that tag on there. But if we do this Apptainer push container SIF like this, we can go ahead and container up, which completes pretty fast. Once again, I can, I think it's completing pretty fast because on the technical level of the hashes it's the exact same container that I'm pushing up for latest that I'm pushing up for stable in this case. So you would see a little bit of some separation there, like I showed with GCP. And you'd also expect a little bit of upload time. But in this case it's just recognizing that it's already there. So if we go back to the ECR, we'll be able to see that we've got upon refresh, this image is now tagged, latest and stable. So we can make changes to it there. So that's the AWS ECR. Let's see here.
What Happens if You Don't Clear Your Cache Before Pulling From a Different Registry? [39:40]
Brian Phan:
Oh, first I have a quick question for you. So if you didn't clear your cache before pulling from a different registry, would it just use the container that's cached then?
Forrest Burt:
I believe so. Because I think when it pulls that down from the registry, it's going to take the hash of what it finds at the registry. It's going to take the hash of what's in the cache. In this case, I don't think the registries would be doing anything to alter it at all. So I think that you're going to get that, but this next time I won't clear it and we'll see what
happens. I'm pretty sure it should just cache. So that is the AWS ECR. I will move over to my next one, which is Azure. So here in Azure we can create container registries. We have our Azure Apptainer demo one. There's a lot of information inside of this. We're looking at repositories, which are the actual containers that have been pushed up to this. So you can see we have once again, a stable tag here. I can go ahead and pull this down once we switch over to the command line. All right, so here we are.
The token in this case comes out with a little bit of extraneous information, so I have to copy it from another window. So gimme just a moment. Copy that. So in order to get into this registry, we are going to do this right here. So you can see, Apptainer remote login username, a bunch of zeros, and then this azureapptainerdemo.azurecr.io. We can go ahead and copy the token. And we have our token successful message, meaning we've logged in. Once in here, we can go ahead and pull this down. And so then when I go ahead and do this, see if we can pull this down. And it does use the cache SIF image, so there we go. So, once again, as usual, that's the same image that we've had there. And then if we want to go ahead and push, I wish I had a different container right handy to push up to this so that we can see what it looks like when it's not just pushing the same thing.
Dave Godlove:
If you build a new container from the container that you have, it won't be the same container because it'll have a timestamp saved into the SquashFS file system that is in the SIF.
Forrest Burt:
So like from or like what's the bootstrap method on that?
Dave Godlove:
So you could just type the command completely, the command line, just build, so the Apptainer builds the name of the new container, and then the name of the old container, actually the full path to the old container.
Forrest Burt:
Cool. All right, let's give this a try. So we want to go ahead and push this latest version that we've just created of our application. We can go ahead and do Apptainer push, we'll do Apptainer over container -2.sif. And then once we go ahead and do this, this will actually take a second to upload because it's not just using the cached one but we'll see it appear there as I believe a new image in Azure in the same way that I showed there with GCP, how we have that different tag from here on out, I'll just use this container2 one, so we can see that. I apologize for not just doing that from the start. It's always something that gets you at the demo. So we might be waiting a second. This is a 119 megabyte image.
Does Every Registry Follow the OCI Standard? [43:53]
Dave Godlove:
And while we're waiting for that one of the things that you're highlighting, which I think is really cool, is that each, I mean, it's not cool that this is the case, but it's cool that you're highlighting it. Each one of these registries is a little bit different. It's worth pointing out too that even as far as like the way that each one of the registries implements OCI. So OCI is a standard, but it doesn't mean that everybody has to follow that standard, right? So each registry puts their own little flavor a little bit on OCI and might not implement all the different standards that are associated with that, or might do so to differing degrees. And then when you get into ORAS, things are a little bit different too as far as what's implemented and what's supported and what's not.
What is the Origin Story of ORAS? [44:47]
Forrest Burt:
Dave, correct me if I'm wrong, but isn't the somewhat comical origin story of ORAS that people were doing, like Docker Hub as a database type thing, stuffing arbitrary data into the layers of containers and then storing them out on registries and that type of thing?
Dave Godlove:
Could be. And I think that you, So I don't know. I don't know exactly. I wasn't around for the very start of ORAS. I was only around when folks started to come to us and ask us to make ORAS a first class client within Singularity. But I do know that for a while ORAS was not supported, explicitly not supported by some registries because they didn't want people just using it as a backup and putting all their pictures of their cats up there and stuff.
Zane Hamilton:
Gotta back stuff up somewhere, Dave, come on.
Forrest Burt:
So I'm pretty sure, just to demonstrate really quickly, I think my credentials are cached. But we'll find out here in probably about 20 seconds if this pings back unauthorized or if this actually uploads you'll notice that I've just gone back to the AWS ECR and I'm just uploading that container2 that we just had. So we'll give that a minute or so. And I think we're going to start to be up on time, so we're going to move it along a little bit more after this one, I think.
Zane Hamilton:
Oh, we're waiting for that. Are you guys, oh, of course it finishes right as I start talking.
Forrest Burt:
Sorry. Zane here we go. We're back into it. What were you saying, real quick?
Is It Possible to Automate Pushing and Pulling From Cache? [46:22]
Zane Hamilton:
Are you guys seeing people automate this type of build and push and pull to get it in cache? Is that something people are automating or are you seeing people do this real time like you're doing it now?
Forrest Burt:
Oh, absolutely. People are automating this. You can do the same type of CICD goodness that you can do with Docker entirely with Apptainer. So, this is entirely a process that you could have automatically building, pushing, testing, deploying. You could build those same types of pipelines Apptainer in this case. It's convenient to manually upload it here.
Dave Godlove:
I was going to say, Brian, go.
What is Brian Phan Working on at CIQ Right Now? [46:55]
Brian Phan:
Yes, this has been something I have been working on, but I'm still trying to figure it out. Like at CIQ we work with a bunch of different scientific software. So getting all of these different tools to build at scale and in a cost efficient way is a little bit challenging. But look forward to a future webinar where we can cat demo some of this type of stuff.
Zane Hamilton:
Oh, very nice, Brian. Thank you.
Generating Access Tokens for Apptainer With GitLab [47:23]
Forrest Burt:
Awesome. So I went ahead and, let's see, I did pull, I did push. Okay, good. We'll go back to my menu here really quickly and I will just show you that here in Azure.
We have our latest and stable containers now separated because we rebuilt that container. And if we go to the ECR, we also see that we have two different tags in there now. So you can see how different images will indeed engage different tags, just as you would expect. The next one that we're going to look over is GitLab. GitLab is a really common DevOps type platform or is this window out? There we go. You can see that I've got my GitLab containers repo here. It's got a container registry inside of it. I have my Apptainer demo container here with my stable tag. If I want to go ahead and jump into this. This one right here, isn't it? Yep. There we go.
so for this one right here I'm doing just the same remote login. I'm also pasting an access token that I got in from here. When I say I'm pasting an access token in this case, I go generate that from the GitLab website. You go generate a personal access token with the read registry capabilities, you need the write registry capability in order to push up to it. But we'll go ahead and do this. We'll find my note with the token, paste that in, and we've got a successful login. I can go ahead and Apptainer pull that, there we go. Cache.sif image again that we had out of that. And then I can go ahead and of course, if I would like to, something up to this. So there we go. Oh, whoops. Dave, while we're waiting for this one to upload, that's the GitLab part of it. Do you want to jump into the Docker Hub part of it?
Why Does Pushing SIF Files To Registries Matter? [49:40]
Dave Godlove:
Sure, absolutely. So I wanted to highlight too. So you might be thinking to yourself okay, it's great that you can push native SIF files up to these registries, but why would you do that? Why would you care? So I want to highlight some of the advantages or some of the things that SIF gives you, especially when you're working with Apptainer instead of working with something like Docker or a PodMan or whatever, and then show how you get those advantages of working with a SIF if you are able to push the SIF directly and use it directly throughout the life cycle of the container. So last night in putting this together, I went ahead and I created a repo up on the good old Docker Hub called Rocky Linux.
Docker Hub Apptainer Live Demo [50:37]
And I've been meaning to do this for a long time and create a bunch of different Rocky containers. And so it was good that I was able to do this. There already is a repo called Rocky Linux up there, which is the official repo, but those are all OCI images. And so these are all SIF images. Okay, so I tagged four different images. Two of them are the same. So 9.2 and 9.0 are basically the same. 8.8 and 8.0 are the same. But let me go ahead and show you really quickly how I created these. All right, so the 9.2 I created here with this Rocky Linux 9.2 def file. So if you look here I'm going to start talking about software supply chain and knowing where your software comes from and verifying that it's exactly the same software that you think it is when you get it.
Using Mirrors to Verify Authentication Security [51:36]
So in this case, normally when you start and build a container from a source, you usually build it from another container. What you can see here is I'm actually building from the upstream mirrors. So I'm skipping the whole grab a container from Docker Hub or Harbor or Quay.io or whatever step entirely. And I'm just building directly from the mirrors that you would normally build your operating system from, right? So that's cool because it means that you, there's, there's less people that you have to trust. Basically, when you create this container, you can be more sure of the contents of it. Okay, so I built another one here called Rocky Linux 9.1.sif. And I haven't pushed that up to the registry yet. So let me go ahead. I want to push that up to the registry, but once it goes up there, I'm going to want to download it again later.
And when I download it again later, I want to make sure that I actually get the same container that I pushed up there. Okay? So first off, let me just show you. So this 9.1.def this one I had to use a slightly different URL because that's in the vault. Now, that's not in the public repos. So when you're building from the upstream mirrors, it's a little bit more difficult. But what I'm going to do to make sure that this is the same image. When I pull it later, let me just go ahead and demonstrate. So if I do Apptainer pull ORAS. So if I pull the 9.2 image that I've already created as an ORAS it's going to give me the cached one, but that's fine in the interest of time, if I've got that one here, I can verify.
And this works because I've signed this image. And not only can I verify this image, and I know that the fingerprint is supposed to be this fingerprint, by the way, I actually have this fingerprint also on the repo. So if you wanted to verify this image, you could do so too. And not only can I verify this image, but anybody can verify that this is the image that I created because the public key material is up in a public place and the Apptainer will automatically download it for you when you try to verify. So that's something that you guys can do on your end time, is try to pull these images and verify them. If I try to verify the one that I just created for 9.1, though, that's not going to work. Cause I haven't signed it. So let me go ahead and sign it. And I have to enter my pass.
Zane Hamilton:
I saw it.
Dave Godlove:
Oh, okay. My bad. That'd actually be really bad if you saw that because this is like my production key that I use for all my important stuff. So this repo, I actually think that this is like something that people might use. So I'm going to go ahead and push now. You can see that I already tried to do that once. I'm going to go ahead and push this to Rocky 9.1.
Using ORAS to Bypass Mirrors For Software Supply Chain Security [55:17]
And as soon as that gets done here, we should be able to refresh. And now we've got the 9.1 tag. So that's pretty cool. And so not only can you verify just to complete this. So there's two more things I want to talk about. Okay? So not only can you verify the image just at the command line like this, but another thing that you can do, let's say I wanted to build from this image, and once again, we're talking software supply chain. So I want to make sure that what ends up in the image that I build is exactly what I think is in the image, and it's not going to be tampered with or messed around by some malicious entity. Well, what you can do when you now build. So it's cumbersome to build from mirrors all the time.
How to Perform Fingerprint Verification With Docker Hub [56:12]
So I can take advantage of the convenience of building directly from Docker Hub, but I can use the ORAS protocol to build directly from a SIF file. And oh, by the way, when it comes in, I can check that the fingerprint is that fingerprint that I expected it to be so I can perform a verification step right here at build time. And then if this fingerprint is not the same, then this'll bomb out and it won't work. Does that make sense? I'm just going to talk about it and not show it right now because I think we're a little over time. And just one more advantage that working with SIF gives you over working with Docker Hub or OCI images when you're in Apptainer. So let's say I wanted to download the famous LOLcow container because I wanted to know how it was originally built.
Well, if I did that, you'd think I could use something like Apptainer inspect def file LoLcow, but if I do that, that's supposed to give me the definition file that was used to build this. But since I pulled this from Docker Hub, the actual definition is just that I pulled it from Docker Hub, it created this from layers that were up on Docker Hub. So that was the build. And so that doesn't give me any information at all. Instead though, if I do a pull, I have this same image saved as a SIF with the tag SIF here. So if I pull that same image as a SIF file, now I can do my inspection.
And it's actually going to gimme the definition file that was originally used. So you just get more information and you've also got that software supply chain aspect that I was talking about. So just like to zoom out and summarize what I'm trying to say there when you're working with Apptainer. So, there's advantages to building as OCI containers and using those, like if you're going to be using both Docker or PodMan or something like that and Apptainer, that's probably the route you want to go. But if you're working on Apptainer now that OCI registries support Apptainer, you get a lot of benefits by just actually working with SIF files and using them as is. And some of those benefits like software supply chain and knowing where your software's coming from that's not tampered with are actually really important security features.
Forrest Burt:
Thank you Dave. That was fascinating. Very much
Rose Stein:
It was, and it's even better too because when you're talking about it, you can tell how excited you are about it, that like this didn't always exist, right?
How New is Uploading SIF Files to the Cloud? [59:20]
Dave Godlove:
And as recently as just like six or eight months ago, Docker Hub in particular would not let you upload SIF files. So it's only been within the last year that Docker Hub even allows you to use the ORAS protocol to upload SIF files. So it's pretty cool. It's new stuff.
Rose Stein:
It's really cool. Well, thank you to all the people that were involved in making that happen. And it seems like it's so exciting what's happening in the world of containers and yet as we're looking at what we have and where we're going and all the things that we can do with them, it's even more exciting. And so I definitely want you guys to stay tuned as the weeks go by because we're going to continue to share with you and show you and demo for you and encourage you to play around with this software and show you how it can improve your compute resources and your abilities and also the way in which you, if there's admins watching how you can encourage the people that you are, like you're supporting the systems, but like all the people that are then using the system Right. It makes it a lot easier for them to be able to access those resources too, without you having to do everything for them. Right. Which is really cool. So I know we are closing out here. Are there any final thoughts that you wanted to add here? We'll start with Brian.
Brian Phan:
No final thoughts. Apptainer is great.
Rose Stein:
That was the perfect final thought. Apptainer is great. Awesome. Forrest, do you have a final thought?
Does Apptainer Work With Oracle Cloud? [1:00:58]
Forrest Burt:
If I may have a final screen share just like 30 seconds? So I know we're up on time, so I won't dive too deep into the rest of this stuff, but I do just want to point out really quickly if we're back over here on GitLab, we have that latest and stable container there. This whole type of thing. And of course it's going to want me to log in. This whole thing also works up on the Oracle cloud. You can use the Oracle Cloud Infrastructure Container Registry there to store these types of things as well. You're only going to see this stable one in there, but you can see here that much like everything else we add we've got that stable thing there. You can log into one of these with just one of the standard auth tokens that you can make through OCI. And this one was the one with the most complicated login. But we are up on time, so I think, I suppose we will skip.
Dave Godlove:
I soaked up all the time there talking about the advantages of SIF.
What is the Most Exciting Thing About [1:02:06]
Rose Stein:
No, it's totally awesome. Forrest. Just like because we were talking about time and how these things didn't always exist. What is the most exciting thing about being able to have containers up in these different cloud environments?
Forrest Burt:
Just what we're seeing here, the massive extensibility of being able to take the architecture that you've built and the systems and things that you've built that you've put tons of effort into. And that instead of having to move around and rebuild these different clouds or change the technology that you already have, et cetera, into a different format. Apptainer works for all of the same use cases that we would expect to see out of a cloud container solution. So there's nothing that we're essentially limited by here. So it's very cool to see Apptainer working in the cloud. And that basically concludes Cloud Day . We can also, I was going to pull down an image onto a GCP enabled Rocky Linux instance just to, so that you can pull and run out of that type of thing. But I'll leave that as an exercise to the reader to deploy that type of AI and get that architecture running.
Dave Godlove:
So everybody should know this. So Cloud Day was Forrest's idea and Forrest basically put all this together. Maybe we could put together a blog post or something since we already have the commands and stuff and like a companion to this so that we get all that information out there.
Forrest Burt:
Fantastic idea. Keep an eye out for that everyone. That'll be coming out soon. Thank you all for Attending Cloud Day.
Rose Stein:
Yay. Yes, thank you everybody, make sure that you like and subscribe so that you can get notifications of all the different things that we are pushing out to you. And we'll be back here at the same time. Same place CIQ in the house. I do want to give you a moment. Zane, dude, you want to pop in and say hey, I feel like I've taken over.
Zane Hamilton:
No, I appreciate it. I got pulled into like three different things all at the same time, so.
Rose Stein:
It's exciting. Never a dull moment, right? Never a dull moment here. Awesome.
Zane Hamilton:
I appreciate you guys joining again. It's always fun to see you. I feel like I don't get to spend enough time with you guys anymore, so I love it when you're on. Thank you very much.
Rose Stein:
Awesome. All right, we'll see you next week. Thanks for joining.
Dave Godlove:
Later.
Transcript
[Music] thank you foreign [Music] thank you [Applause] [Music] [Applause] [Music] foreign thank you foreign foreign [Music] foreign [Music] thank you foreign thank you hello Rose how are you I was like do I have time to get my Rocky earrings on CE I'll just I'll just like point this way there you go take it well welcome everyone to another ciq webinar we appreciate you joining this week we're talking about Cloud right Bros we are talking about clouds specifically around obtainer so this is very exciting and I think we're gonna have to do a little explanation of what exactly this means but I'm I'm very excited I
think Forest is going to join us the whole crew perfect well welcome guys I'm gonna go around and do introductions real quick I think you've all been on here enough that people probably know who you are but for those who are new we appreciate you joining let's introduce ourselves Forest oops there we go hit the wrong button good morning everyone my name is force Bert I'm an HPC systems engineer here at ciq uh I've done the CIA for about two years I come out of the academic HPC sphere uh where I worked kind of with academic HPC and the national atmosphere of that type of
thing so excited to be here on the webinar today and excited to be talking about obtainer great thank you Forrest Dave welcome back good to see you hey good to see you Tuesday and good to see Rose everybody um I did not have time to put my uh my Rocky earrings in I apologize I'm Dave God love uh I've got a lot of long history as a research scientist um and I used to work at biowulf at the NIH um and I've been around the app Tanner Community for quite some time I do you know participate in a lot of these webinars and all enemy
Solutions architect at ciq okay thank you Brian hey everyone uh Brian Fenn here I'm a Solutions architect here at ciq all my background's in HPC Administration and architecture and uh workflow experience across various verticals of science from Automotive to Aerospace to Children weeks uh happy to be back on this webinar and excited to see uh the demos that David Force have prepared thank you Brian I see Brian you didn't get your Rocky earrings on either so I guess we just missed out they're in the mail guys they're in the mail they're in the mail we'll get you a little clip-on ones they'll be cute maybe
View full transcriptHide full transcript
maybe so Rose it's been a while since you've introduced yourself why don't you introduce yourself as well uh Hey everybody my name is Rose Stein I work at ciq Zan is actually my boss yes he does manage people and so we help on the um well really making sure that people who are wanting our services are able to get the services so we're kind of like the in between right they can call it sales some people really like jive with that with that word and other people don't really but I mean someone's got to do it right somebody has to take the customer and bring
them into the company and make sure they're getting um all the incredible work that that um forest and Brian and Dave are doing so we're kind of like the in-between people there and it's very exciting it is like the other day we had a customer um well a potential customer at first now they are a customer and we were having a conversation with them about what it is that we provide and what it is that we do and the guy was just kind of like silent for a couple minutes and then he said you just solved all my problems those are good conversations such a
good conversation so this is actually one of those things um when and Forest I'm I hope that you are willing and kind of putting you on the spot I didn't tell you this ahead of time but I would love for you just to share like your excitement of a story that you shared with me around I think it was like 2019 you said it was when you first kind of discovered containers and what you were thinking about them oh I think you're on mute can't hear you yeah I can't hear you oh you broke his mic dang now you're on mute how about now there
we are okay perfect that was odd um yeah Rose if I'm thinking of the same story um the kind of like idea containerization using that as like a system yeah um this is obviously an idea that has been you know massively expanded on and you know architected and you know was being thought of in you know places and uh other places at the same time but uh you know I remember shortly after getting into containers um one of the biggest things I started to think about with them was the ability to do um kind of similar to what we've expanded on at ciq with like
the festival side of things but just like in my kind of very new to HPC very new to Linux type way um I just remember like getting so excited about what people could do with containers and how it uh improved module file systems and improved what I was doing with building uh you know software my users were able to utilize containers like I said instead of module files I was able to build and deploy software a lot easier um I was suddenly just like wow Singularity which is what it was at the time but at tainer this is incredible to uh be able to actually
work with the system in this level and to be able to do away with some of these outdated um paradigms that were very annoying about to deal with as a CIS admin um so I just remember like sketching out at the time this little like oh you know CM shared containers uh you know different type of architecture um which was like I said pretty crude for the time but um yeah it's it was uh it's very cool to have seen uh at ciq especially with like the release of fuzzball um those type of ideas like I said that other people were thinking of those at
the same time and the containers are kind of the way that whole sphere is going um so I've been very pleased to see uh like I said other people were thinking of that and that we've been able to expand on those type of Concepts so far at ciq with uh like puzzball orchestrate and our different um kind of container-based paradigms like that with all the work that we do around octainer with what we've done with werewolf uh it's very cool just to continue to see um containers especially the obtainer sphere playing such a huge role in the future of HPC thanks for the story for
us so I know I feel like we bring this up every time but it's interesting to me and I want to make sure that everybody that is watching this especially for the first time that's new to abtainer and Singularity I'm gonna ask you this question Dave can you kind of point out we talk about containers a lot of people think of Docker can you just high level real quick tell us kind of the differences between aptainer and Docker and why yeah um I'll try to I'll try to be quick about it like you said so um uh so the the history and I talk about
this a lot the history of of app Tanner um really is that people started to come to HPC sys admins and staff scientists like me and like Greg and like other folks um around 2015 or so and started saying hey I need you to install Docker on our HPC systems and um so we found that for um you know for for security purposes pretty much uh at the time Docker was not um up to Snuff to be installed on an HPC system it just it doesn't have um a security model that works well with a multi-tenant system basically so you got multiple users and some
of them don't have root access then it doesn't really work to install Docker so uh Greg thought well um I would like to design a container platform that works with multi-tenant systems and so while I'm at it why don't I just go ahead and make it um as HPC friendly as possible because I'm targeting HPC people so that's one of the big differences right off the bat is that the security model is different like the the security like the architecture is different at a really fundamental level and it was targeted specifically to HPC users so it's got a lot of like HPC goodness associated with
it um and then the other big difference which is something that we're going to be talking about I think a lot today is the format the container format um so you know it's my understanding and I've repeated this whether it's correct or not several times but um I think that uh one of the big reasons so of course apptainer um used to be called Singularity and one of the big reasons that Greg named it Singularity was because the single file format um the containers come in so instead of having you know a whole bunch of tar balls that come in as and have to be
stitched together as layers into a single coherent file system at runtime you've got a single image file that's wrapped up in something that we call a Sif a singularity image format file and um you know that is how your container comes in and you use it and you can move it around and do things like that so that's a really really big difference and it's you know something we'll be talking about today I think as we talk about uh Cloud support so I know the topic today is cloud and we're talking about Singularity how does that play with the cloud why is that important so
when it comes to obtainer in the cloud being able to utilize the common registry Solutions and stuff like that that are provided by the different clouds out there gives you the ability to you know if you've already got a bunch of architecture we found in our investigation for this webinar that you know obtainer works on most of the major clouds um and so being able to utilize these Cloud container Registries alongside your existing architecture or the supplement you know if you're not up in the cloud to be able to uh bring container Registries to just kind of in general your lab or whatever if you
haven't already had them um being able to utilize all of these Cloud Registries for apptainer just makes it really easy to you know push containers pull containers in the same way that you would imagine with kind of the docker-based sphere of things uh and yeah like I said it really gives you a lot of ability to move around between different clouds between different architectures um and redistribute those app tainers that you might have out there very easily so I think that we're just about ready to see it right talking about it is nice and beautiful and wonderful but we want to see it but just
before that I know that people get really excited about containers just like you did back in 2019 for us when you first found containers you were like whoa cool like the story that of course told me he was like and I got my whiteboard and I was there and I like I imagine him with like you know like two like a pen in each hand like doing things like this and like just being amazing right like figuring out all the things that you can do with containers um and some people might not already beam um in the mix so I know that like is the
slack Channel like the app Tanner slack Channel like the best way to kind of begin to get involved and jump in and ask questions and things like that yeah that's a great place to hop in up um if anyone else has any other suggestions uh definitely feel free to this realm out there I think the app trainer website has kind of a little listing of all of the obtainer.org uh it's kind of a listing of all of the different Community spaces and things like that that are associated with obtainer but yeah at the moment a lot of the activity is centered around that slack so
feel free to join us and uh it's very well documented and there are a lot of people that contribute to that documentation and we really appreciate it but if you look at it pretty close Dave's written a lot of it Dave's the man go find him I was just going to jump into and say that um another thing that uh you know I wanted to highlight for people who are new to Containers this kind of came up so we were just at um a couple of us were just at uh the the Rocky Mountain Advanced Computing Consortium or rmac meeting and this came up uh
several times and we were talking to people so if you're new to Containers if you're not really maybe you're kind of newish to Linux or maybe you're not very newish but you've you know you've not used it extensively you know beyond just like you know SC SSH and SCP and you know moving files around stuff like that um if you haven't used Linux extensively you know that might you might be a little uh like intimidated to get into containers because of that and I want to say that like you should really feel the total opposite way containers are a great way to learn Linux and
this is one of the the cool things um about containers that that new folks who are just new to the the area find is that a lot of times when you're in a you know your Linux system and you're messing around there's like stuff that you're kind of scared to mess with or touch because you know you become root and then you start doing stuff and you know maybe I'm going to mess something up and you know but if you're in a container delete files mess stuff up do you know try to install things in weird ways do experiments and and break your containers and
this is a great way to just learn Linux and to get your feet under you and try and start to get a feel for how things work and you know uh what works and what doesn't and so on so so I think that like don't be intimidated if you're kind of new to Linux because that's actually you know a great time to start learning about containers yeah I love that thanks for sharing that um and just to be clear too the obtainer is its own thing and it's totally open source so Dave obviously you work at ciq but you also spend your some off time
helping and supporting the open source Community which is apptainer so um when he says go and grab and play with it like go do that right it's all it's all open source it's available for you to go and ciq is a company we provide an opportunity for people to have like you know professional support on top of of just you know grabbing grabbing the um the open source files and you know and playing with them if they want something actually built in a specific way or any of that kind of stuff so sometimes people ask about just like the clarity of what that means so
thank you for that I think we're ready and who's first all right everyone so yeah so like I said this is Claude with obtainer uh we are just going to be going over how to use obtainer uh with the various different Cloud container Registries and stuff like that that are out there um just to situate everyone a little bit more uh a registry in this case is a place that you can put a container and store it up in the cloud and then be able to pull that back out with you know your credentials for that registry um they are essentially registry is essentially the
de facto term for you know container storage um there are more or less synonymous in the cloud you might see that we also talk about artifact Registries which are sometimes a little bit different an artifact registry uh is sometimes meant to hold other artifacts than just containers like Helm charts things like that so I'll make the distinction when it's there but just everyone knows registry is more or less just kind of like a container storage type thing so most major clouds out there in different places offer some way to do uh a container registry they offer some type of solution around that what we're going
to be going through today like I said is showing how this interfaces with a few of the major clouds so we're going to go over gcp AWS Azure gitlab uh Dave uh we'll be doing Docker Hub to show how sifts are supported there these days and then we're going to do oci so the Oracle Cloud infrastructure and then at the very end we'll do a very quick gcp demo on some resources out there on our gcp ciq uh optimized Rocky Linux that we have up there I apologize you refer to the Dave Cloud for a minute you threw Dave out there did I the Dave
Cloud no just kidding my apologies have I done there's a lot of there's a lot of clouds for a moment here there are a lot of storm going on at my window fantastic um but yeah so let me uh share what I've got here like I said we're gonna go over um uh gcp AWS Azure gitlab Docker Hub oci and then a quick just like GPU demo band um so I'll go ahead and share my screen and we'll go ahead and start with uh the gcp artifact registry so just to show you what we're looking at here I have pushed into this registry everyone see
my screen we can fantastic okay at least I can fantastic okay so what we're looking at here is the gcp container registry interface so this is a actually this sorry this is the gcp artifact registry interface um so this is an artifact registry that we've created on gcp it's called containers and you can see I have uh if I go back here you can see the full list of them but I don't exactly want to do that so there's a whole bunch of other containers that are also stored in this registry Docker containers and obtainer sips together so you can see I've got this obtained
demo container that I've gone ahead and pushed here if we go and look at this uh we can see that um this should be an oras image that gets pushed up there but sometimes the uh tagging on it gets a little bit odd but this is an oras Type image that we have pushed up here we might have to time out at some point maybe not right now sorry but at some point we might have to talk a little bit about what things like oci and oras mean Dave if we want to jump into that right now that would probably be a good time we
want to really quickly explain oci and oras and that type of thing because a lot of these registers that we're using uh are based on kind of that concept just to preface the discussion a little bit that we have oci type images and then we have oras which is a way of using these obtainer sips with oci registries sorry to interrupt yeah yeah I should have jumped in sooner and said something so um all right so a few acronyms to be aware of we've already talked about Sif Singularity image format uh Sif is an image it's basically a um a file system image saved with
some metadata in one file um oci oci means the open container initiative and way way back in the day uh around 2015 or so somewhere in there um Docker decided that the doctor the company Docker decided to start um a Consortium called the open container initiative to set up a bunch of standards for how containers should be stored and run and all that kind of stuff and um they basically started um the standard based on Docker and so um uh so that's that's what the open container initiative means oci oci standards cover the container format the container run time and now most recently Registries as
well so there's a there's a um there's a standard for how you store containers online and we're going to be talking a lot about oci Registries today oh Rose has got her hand up so this explains why like more times than not you're messing around with apptainer and you see docker right right like it's like a Docker pool or go get from Docker Docker Hub or Docker or something or other and people are like wait if I'm using obtainer why does it say Docker and this is why right so so so um way long time ago shortly after apptainer became a thing uh in his
previous Incarnation Singularity one of the um one of the community members uh and I'm gonna give her a shout out because she's been you know she really helped out quite a lot Vanessa socket said wouldn't it be cool if we could download uh oci containers directly from places like Docker Hub and run them in um in apptainer then Singularity and so she submitted a bunch of python code that allowed us to do just that and so that was like you know hugely influential and kind of a big bang and kind of like really made obtainer take off because now instead of like building all your
own containers you could just go get them so fast forward and so then I covered oci a little bit and what that means the last acronym I wanted to cover was oras so fast forward a little bit a bunch of people in the container Community got together and said wouldn't it be cool if we could use an oci registry as storage or as and so wouldn't it be cool if we could just push random data you know any kind of a just a data blob up to an oci registry and um uh some some some folks actually from Microsoft uh you know uh talk to
some people in The Singularity community and said wouldn't that be cool if Singularity so and you know now obtainer supports that as a protocol that you can use to store Sif containers so that hopefully Loops it all together so now um it used to be that people would build their containers using um Docker files push them to some place like Docker Hub where they could get them get at them easily and then they would pull them without painter and transfer them from you know layers into a Sif at that point in time now with orast it's possible you know as long as the registry supports
it with you almost all the Registries do now it's possible to just push your container directly up to an oci registry as a Sif and take advantage of all the the you know the great things that Sif offers which will hopefully we'll be talking a little bit about later on okay sorry level Set uh terminology it's perfect thank you Dave yeah thank you very much Dave exactly so yeah what we're going to be seeing here is leveraging all that Tech that just or that Dave just discussed in order to be able to store these sips in these Cloud registries um so to uh switch back
to my screen sharing screen here we can examine this image for whatever reason when we look at this image in the artifact registry it shows up as a Docker format so I don't know if they're wrapping this as something like that on the other side but this is a Sif that we've stored up here in the uh gcp artifact registry you'll notice that we can get a pull tag to it with this this and this so I'm going to go ahead and share a terminal really quickly and I'll show you all how we can pull down the tag that we have here for this you
can see we've tagged this stable so we can imagine this is maybe like a stable release version of our application or something like that so we'll go ahead I'm managing the fact that I have to remotely log into like five different container Registries here and sometimes the credentials get a little munged so bear with me if I have to drop off not drop off but drop off screen sharing for a second to set up a credential in the background I think we should be good but we'll see how it goes here live demos first always let's see here let's see if I can make those
even bigger there you go a little more nice thank you okay there we go awesome uh okay so we're here on the terminal uh in order to go ahead and interact with this gcp registry uh I have got to do a uh let's see obtainer remote login gosh you uh oauth two access token and we're going to paste in the name of this registry uh so let me grab that really quickly a whole tag and then I'll back a little bit but when I do this I'm gonna in another screen just do it quick um gcloud auth print access token in order to get there's
a temporary access token into this registry I believe my authentication said already be set up but I'll just do this just to show how the login works on the command line so when we do obtain a remote login we have to provide U which gives us a username and then we have to provide the registry here at the end as this is the URI to it you'll notice that we're using the oras spec that means that we want obtainer to treat this as a registry that we're going to put sifts into so we'll go ahead and do this again our password token request and I'll
paste in my gcloud auth print access token I'll get that token stored in there if I want to go ahead and pull that container um I can go ahead and use this right here so just referring directly to obtain or pull uh the URL that we got from the top of that so just that ciq sa containers and then the name of the container that we put into the registry as with the tag so we can go ahead and run this and it's all the same container that I've put all around these so if I forget to do like an obtainer cache clean between them
and it says using cache oros image that's just because it is detecting that it's got the same image coming down from that registry uh but I will try to remember to um in each one of these so we can see a clean Pole so we'll go ahead and do this and we'll see if this will start to download an oras image this is pretty small just like 100 megabytes or so so we should see it's finished pretty fast um but you see we get that indication that we're putting down an oras image we get that right there this image is just a really simple um python Type image it's just what I built with this container.gov here so we should be able to go ahead and do an obtainer shell uh obtainer demo this and then we can do our iPhone 3.
so that's kind of the basic of the container that we're actually or the basic idea of the container that we're pulling down here I'm going to go ahead and remove that each time so it's not clobbering itself um what happens if we want to push a container up to gcp we can do that just as easily let's go over here paste this in and we're just doing obtainer push and then the name of the container and we're going to push that to the latest tag so say we have a new version of our application that we want to push out for testing we can tag
that latest and go ahead and push and upload complete um so that finishes pretty fast and when we go back to this page over here we should now be able to see that we have a new tag on that image while you're pulling that up first I know some of our customers have some fairly large container images and I'm sure that some of the container Registries have limits on size but obtainer doesn't care about the size of the container correct you can say it one more time Zane so I know we have we have some customers that have some fairly large containers like several gig
there's no limitation or no size limitation on obtainer doesn't care how big nope absolutely not you can build essentially an arbitrarily large container out to the limits of the performance of your file system and the storage space that you have uh there's you know strategy there you probably don't want to build you know the mono container that's hundreds of gigabytes in size because that becomes very unwieldy to move around versus the concept of containers which is you know have in a lot of cases a single app just kept in a container um but yeah there's it can do any size it when you build an
obtainer if you're like building from an oci image it takes all the layers that you put into a Docker container squashes them together into one file system with make squash fs and then you just have this essentially um squash FS image there that represents the rest of the container so I've gone ahead and pushed this unaware that pushing the same container is actually just going to retarget with the same tag so you can see that as I've gone ahead and pushed that up I've got now the latest tag applied there but if there was a material difference between those two containers we would see like
for example uh for example another container that we have here that's also a sip we have a number of different versions here as things have been pulled and then we just maintain a stable version of it that's the latest one um so that's the Google artifact registry you can see we can store sips there we can move things around we'll go ahead and switch to the next Cloud that we're going to look at which is the AWS ECR so this is the elastic container registry that AWS provides so we'll go into here so some of these places do these kind of the registry setup just
a little bit differently but I'll kind of explain what we're looking at here so we're in our Amazon elastic container registry I've Got My obtainer Demo our obtainer demo container here and you can see we've got the stable image tag applied there just like we did in the previous one you're going to see that we basically have that same thing across all of these clouds um we have an Azure or a stable one uh in Oracle we have a stable one and then in gitlab we also have a stable one but here in the ECR uh you can see we have this artifact type other
um which is just kind of indicating that it's not exactly a Docker container uh it's something different in this case it's a sieve so you can see that um we've got one waiting there uh I'll go back to the command line and we will go ahead and do an azure deal there we go or sorry not Azure I mean this book on an AWS deal so in order to get in here I'm going to just go ahead and do this right here so just AWS ECR get login uh for the region and I'm just piping that into apptainer I need this right here I also
need of course the actual URL that we're going to so there's that right there uh so yeah AWS ECR get login password um region uh Etc that basically just gets you like a token that you can use to log into the ECR uh we're going to pipe that through the obtainer and just use password standard in option there the username AWS you can find the username that you're supposed to be using generally in like the polling instructions and tagging instructions for the registry so a lot of times that'll tell you uh there's like a standardized username like you saw with gcp it was oauth to
access token with AWS it's AWS with Azure it's a bunch of zeros so you'll kind of see that generally they have um you know something like that so that's why uh in this case we have that username and then like I said I don't want to reveal this token so I'm just going to use this password coming in from standard in uh we'll go ahead and do this and we once again get the token stored confirming that we have a good login I can go ahead and like I did before pull down this stable release I've got yeah there we go so I'll go ahead
and pull down the stable release [Music] populace there we go so I should be able to pull down the stable from this you'll see we get downloading over us image I'm probably wait a moment there we go we can go back and uh go into this and once again three uh so that you can see we can pull that down from the AWS ECR there we can also push a new tag like I said before this might just cause kind of a duplication because I didn't realize that it's going to just do that tag on there but if we do this obtainer push container stuff
like this we can go ahead and second container up which completes pretty fast um once again I can I think it's completing pretty fast because the container under the like the you know on the technical level of the hashes and it's the exact same container that I'm pushing up for latest that I'm pushing up for stable in this case so you would see um a little bit some separation there like I showed with gcp uh and you'd also expect a little bit of upload time but in this case it's I guess kind of just recognizing that it's already there um so if we go back
to the ECR we'll be able to see that we've got upon refresh this image is now tagged latest and stable um so we can make changes to it there uh so that's the AWS ECR let's see oh first I got a quick question for you so if you didn't clear your cache before pulling from a different registry would it just use the container that's cached then I believe so because I think it looks at I think it's um when it's gonna when it pulls that down from the registry it's going to take the hash of what it finds at the registry it's going to take
the hash of what's in the cache in this case I don't think the Registries would be doing anything to alter it at all um so I think yeah you're gonna get that but this next time um I won't clear it and we'll see what happens I'm pretty sure we shouldn't it should just cash um yeah so that is the AWS ECR um I we'll move over to my next one which is azure so here in Azure we can create container Registries we have our Azure obtainer demo one there's a lot of information inside of this we're looking at repositories which are the actual containers that
have been pushed up to this um so you can see we have once again a stable tag here I can go ahead and pull this down once we switch over to the command line all right so here we are I'm going to grab a the token in this case comes out with a little bit of extraneous information so I have to copy it from another window so give me just a moment so in order to get into this registry we are going to do this right here so you can see obtain a remote login username a bunch of zeros and then this Azure painter demo
Dot azurecr.io we can go ahead and copy in the token and we have our token successful message meaning we've logged in once in here we can go ahead and pull down that uh go ahead and pull this down so I think I'm gonna happen to RM container double stable and so then when I go ahead and do this see if we can pull this down but it does use the cache zip image so there we go um so yeah once again as usual that's the the same image that we've had better um and then if we want to go ahead and push kind of wish
I had a different container right handy to push up to this so we could see what it looks like when it's not just pushing the same thing uh if you build a new container from the container that you have it will get a new it won't be the same container because it'll have time stamps saved into the into the uh into the into the squash FS file system which is in the Sif so like from uh or like what's the bootstrap method on that so you would just do um you could type the command completely the command line just build so obtainer build uh the
name of the new container and then the name of the old container actually the full path to the old container cool all right let's give this a try um so if we want to go ahead and push this latest version that we've just created of our application we can go ahead and do obtainer push we'll do a 10 over container Dash 2.sef and then once we go ahead and do this this will actually take a second to upload um because it's not just using the cache one but we'll see it appear there uh as I believe a new image in Azure uh in kind of
the same way that I showed beverage gcp how we have that different tag um from here on out I'll just use this container two one so we can see that um I apologies I'm not just doing that from the start it's always something that gets you at the demo so we might be waiting a second there's 119 megabyte image and I think while we're waiting for that um one of the things that you're highlighting which I think is really cool is that each I mean it's not cool that this is the case but it's cool that you're highlighting it each one of these um is
each one of these uh Registries is a little bit different it's worth pointing out too that even as far as like the way that each one of the Registries implements um like OC like oci so oci is a standard but it doesn't mean that everybody has to follow that standard right so um each each registry is kind of puts their own little flavor a little bit on oci and might not Implement all the different standards that are associated with that or might do so to differing degrees and then when you get into oras I mean you're kind of like things are a little bit different
too as far as like what's what's implemented and what's supported and what's not Dave correct me if I'm wrong but is the somewhat comical isn't the somewhat comical kind of like origin story about Ross that people were doing like kind of the like Docker Hub is a database type thing stuffing arbitrary data and like the layers of containers and then storing them out on Registries and that type of thing it could be you know and and I think that um you so so I don't know I don't know exactly I wasn't around for the the very start of oras I was only around when uh
folks started to come to us and ask us to make oras like a first-class client within Singularity but um I I do know that uh for a while uh oras was like not supported explicitly not supported by by some Registries because yeah they didn't want people just using it as a backup and putting all their pictures of their cats up there and stuff so got to back stuff up somewhere Dave come on so I'm pretty sure just to demonstrate really quickly that I think my credentials are cached uh but we'll find out here in probably about 20 seconds uh if this pings back unauthorized or
if this actually uploads um you'll notice that I've just gone back to that um the AWS ECR and I'm just uploading that container too that we just had so we'll give that a minute or so uh uh and I think yeah we're gonna start to be up on time so we're gonna move it along a little bit more after this one I think or we're waiting for that are you guys oh of course it finishes right as I start talking sorry here we go we're back into it what were you why are you are you guys seeing people automate this type of build and push
and pull to get it in cash is that something people are automating are you seeing people do this kind of real time like you're doing it now oh absolutely people are automating this this is uh you can do the same type of CI CD goodness that you can do with Docker entirely without Tanner um so yeah this is entirely a process that you could have automatically building pushing testing deploying um you could build those same type of pipelines with obtainer in this case it's convenient to manually upload it here I was gonna say Brian go yeah this has been something um I have been working
on but uh I'm still trying to figure out like figure it out like at ciq we work with a bunch of different scientific software so getting all of these different uh tools to build at scale and in a cost efficient way uh it is a little bit challenging but uh yeah uh look forward to a future webinar where we can demo some of this type of stuff oh very nice Brian thank you awesome um so I went ahead and let's see I did pull I did push okay good um we'll go back to my menu here really quickly and uh I will just show you
that here in azure we have our latest and stable containers uh now separated because we rebuilt that container and if we go to the ECR we also see that we have two different tags in there now so you can see how different images will indeed engage different tags just as you would expect um the next one that we're going to look over is gitlab uh gitlab is a really common uh kind of devops type platform or is this window out there we go you can see that I've got my gitlab containers repo here it's got a container registry inside of it I have my obtainer
demo container here with my stable tag if I want to go ahead and jump into this this one right here so for this one right here I'm doing just the same remote login I'm also pasting an access token that I got in from here when I say I'm pasting an access token in this case I go generate that from the gitlab website you go generate a personal access token with the read registry capabilities you need the right registry capability in order to push up to it but we'll go ahead and do this find my note with the token paste that in and we've got a
successful login I can go ahead and pull that same there we go cache stuff image again that we had out of that and I can go ahead and of course if I would like to put something up to this [Music] um so there we go oh whoops um Dave while we're waiting for this one to upload uh that's that's the gitlab part of it do you want to jump into the docker Hub part about sure absolutely um so I wanted to highlight too so uh you might be um you might be thinking to yourself you know okay it's great that you can uh you can
push native Sif files up to these Registries but you know why why would you why would you do that why would you care so I want to I want to highlight some of the advantages or some of the things that that Sif gives you especially when you're working um with aptainer instead of working with uh you know something like Docker or a podman or whatever and then show how you kind of you you get those advantages of working with a Sif if you are able to push the Sif directly and use it directly throughout the life cycle of the container so um last night in
putting this together I went ahead and I created a repo up on good old Docker Hub called Rocky Linux um and I've been meaning to do this for a long time and create kind of a a bunch of different Rocky containers and so it was good that I was able to do this uh there already is a repo called Rocky Linux up there which is the official repo but those are all oci images and so these are all Sif images um Okay so we've got I tagged four different images um they're two they're two of them are the same so 9.2 and nine are basically
the same 8.8 and 8 are the same um but let me go ahead and show you really quickly how I created these all right so um the 9.2 one I created here with this Rocky Linux 9.2 def file so if you look here um I'm going to start talking about software supply chain and knowing where your software comes from and verifying that it's exactly the same software that you think it is when you get it so in this case normally when you start and build a container from a source you usually build it from another container what you can see here is I'm actually building
from the Upstream mirrors so I'm skipping the whole grab a container from you know Docker Hub or Harbor or Quail i o or whatever you know step entirely and I'm just building directly from the mirrors that you would normally build your operating system from right so that's kind of cool because it means that you there's there's less people that you have to trust basically when you create this container you can be more sure of the contents of it um okay so I I built another one here called Rocky Linux 9.1.sef um and I you know I haven't pushed that up to the uh the registry
yet so let me go ahead I want to push that up to the registry but once it goes up there I'm going to want to download it again later and when I download it again later I want to make sure that I actually get the same container that I pushed up there okay so first off let me just show you um so this uh 9.1.
Def this one I had to use a slightly different URL because that's in the vault now that's not in the public repos so you have to these are you know when you're building from the Upstream mirrors it's a little bit more difficult but what I'm going to do to make sure that I you know this is the same this is the same um image if when I pull it later let me just kind of go ahead and demonstrate so if I do apptainer pull or ass if I pull the 9.2 image that I've already created as uh an oras uh it's going to give me
the cash one but that's fine in the in the interest of time if I've got that one here I can do verify and this works because I've signed this image and not only can I verify this this image and I know that the fingerprint is supposed to be you know this fingerprint by the way I actually have this fingerprint also on the repo so if you wanted to verify this image you could do so too and not only can I verify this image but anybody can verify that this is the image that I created because the public key material is up in a public place
and the obtainer will automatically download it for you when you try to verify so that's something that you can get you guys can do on your end time is try to pull these images and verify them um if I try to verify the one that I just created for 9.1 though that's not going to work because I haven't signed it so let me go ahead and sign it and I have to enter my passphrase look okay sorry I saw it Oh okay my bad that'd actually be really bad if you saw that because this is a this is like my production key that I use
for like all my important stuff so that's that's um repo I'm actually I actually think that this is you know like something that people might use so I'm gonna go ahead and push now um this uh you can see that I already tried to do that once I'm gonna go ahead and push this to uh Rocky 9.1 and as soon as that gets done here we should be able to refresh and now we've got the 9.1 tag so that's that's that's pretty cool and so not only can you verify just to like com complete this um you know so there's there's two more things I
want to talk about okay so um not only can you verify uh the image just at the command line like this but one thing another thing that you can do let's say I wanted to build from this image and once again we're talking software supply chain so I want to make sure that what ends up in the image that I build is exactly what I think is in the image and it's not going to be tampered with or messed around by some malicious entity what you can do when you now build so it's it's cumbersome to build from mirrors all the time so I can
take advantage of the um convenience of building directly from Docker Hub but I can use the oras protocol to build directly from a sub file and oh by the way when it comes in I can check that the fingerprint is that fingerprint that I expected to be so I can perform a verification step right here at build time and then if this if this fingerprint is not the same then this will bomb out and it won't work does that make sense I'm just going to talk about it and not show it right now because I think we're a little over time um and just uh
one more advantage that working with Sif gives you over working with um with uh with Docker Hub or oci images when you're when you're specifically when you're in aptainer so let's say I wanted to download um kind of like the famous LOL Cal container because I wanted to know how it was originally built well if I did that you'd think I could use something like obtainer inspect uh def file oh well cow but if I do that so that's supposed to give me the definition file that was used to build this but since I pulled this from um from this from Docker Hub the actual
definition is just that I pulled it from Docker Hub it created this from layers that were up on Docker Hub so that was the build and so that doesn't give me any information at all instead though if I do um a poll so I I have this same image saved as a Sif with the tag Sif here so if I pull that same image as a sip file now I can do if I inspect like so and it's actually going to give me the definition file that was originally used so you just get more more information and you've also got that software supply chain uh
aspect that I was talking about so you know just to kind of like zoom out and summarize what I'm trying to say there when you're when you're um working with apptainer so so there's advantages to to like building as oci file oci um containers and using those like if you're going to be using both Docker or podman or something like that and aptainer that's probably the route you want to go but if you're working with app Tanner you know now that um oci registry Support app tainer you get a lot of benefits by just actually working with SIP files and using them as is um
and some of those benefits like you know software supply chain and knowing where your software is coming from it's not tampered with are actually you know really kind of important security features Dave thank you Dave that was fascinating very much like better too because when you're talking about it you can tell like how excited that you are about it that like this didn't always exist right yeah and it like as recently as just like six or eight months ago um uh Docker Hub in particular would not let you upload zip files so it's only been within within like you know certainly within the last year
that Docker Hub even allows you to use the oras protocol to upload Sif files so it's pretty cool it's new stuff yeah it's really cool well thank you for all the people that were involved in making that happen and it seems like it's so exciting what's happening in the world of containers and yet like as we're looking at what we have and where we're going and all the things that we can do with them it's even more exciting and so I definitely want you guys to stay tuned as the weeks go by because we're going to continue to share with you and show you and
demo for you and encourage you to play around with this kind of software and show you how it can improve your your compute resources and your abilities and and also the way in which you as you know if there's admins watching how you can um encourage the people that you are like you're supporting the systems but like all the people that are then using the system right it makes it a lot easier for them to be able to access those resources too without you having to do everything for them right which is is really cool so I know we are closing out here is there
any final thoughts that you wanted to add in here we'll start with Brian no no final thoughts uh obtainer is great yeah that was the Perfect final thought obtainer is great yeah awesome Forrest do you have a final thought if I may have a final screen shower just uh like yes I know we're up on time so I won't I won't dive too deep into the rest of this stuff but I do just want to point out really quickly um if we're back over here on gitlab we have that latest unstable container there um this whole type of thing and of course it's going to
want me to log in uh this whole thing also works up on the Oracle Cloud you can use the uh Oracle Cloud infrastructure container registry there to uh store these types of things as well I'm you're only going to see the stable one in there but you can see here that much like everything else we had um we've got that single thing there you can log into one of these with uh just one of the standard auth tokens that you can make through oci um and uh this one was the one with the most complicated login but we are up on time so I think
I suppose we will skip no it's totally awesome four is just like um because we were talking about time and how these things didn't always exist what is like the most exciting thing about being able to have containers up in these different Cloud environments just what we're seeing here the massive extensibility of being able to take the architecture that you've built and the systems and things that you've built um you've put tons of effort into and that instead of having to move around and rebuild per these different clouds or change the technology that you already have Etc into a different format um app Tanner works
for all of the same use cases that uh you know we would expect to see out of a cloud container solution so there's nothing that uh we're essentially limited by here so it's very cool to see obtainer working in the cloud um and uh yeah yeah that basically concludes Cloud day and also I was gonna pull down a uh I was gonna pull down a uh an image onto a gcp enabled Rocky Linux instance just so you can pull and run out of that type of thing um but I'll leave that as an exercise to the reader to deploy that type of AI and get
that architecture running maybe we could put together um since we already since since you so so everybody should know this so Cloud day was Forest idea and Forest basically put all this together um maybe we could like put together a blog post or something with uh since we already have the commands and stuff and you know like a companion to this so that we get all that information out there fantastic idea uh keep an eye out for that everyone that'll be coming out soon thank you all for attending Cloud day yay yes thank you everybody make sure that you like and subscribe um so that
you can get notifications of all the different things that we are pushing out to you and we'll be back here the same time same place ciq in the house I do want to give you a moment Zane dude you want to pop in and say hey and I feel like I've taken over no I appreciate it I got pulled into like three different things all at the same time yeah yeah exciting yeah never a dull moment right here yeah awesome I appreciate you guys joining again it's always fun to see you uh I feel like I don't get to spend enough time with you guys
anymore so I love it when you're on thank you very much yeah awesome all right we'll see you next week thanks for joining later thank 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.