 Welcome to session one of understanding containers. We're gonna be breaking down Docker, container technology in general, and how you can use it, how you can use it to run cool things, and how to get comfortable with it. We're gonna kind of jump right in because we have a lot of concepts to talk about in the first video, but I did want to mention before we get started that there is a blog post that will be linked in Discord that you should go check out that will describe some getting started things. We've got recommended stuff you should check out before this video, especially if you're unfamiliar with the command line, and also some getting started, make sure you have a reclaimed cloud account. And once you do have one of those accounts, we can give you credit for the course. Credit in reclaimed cloud so that you can run stuff during the course and beyond to get started. I'm gonna also kind of lay out a couple things for the course right here and say that we've kind of two main objectives. We really wanna make sure that you get some foundational understanding of what containers are and what Docker is and why they're used for hosting applications like this because that's a common thing that comes up of like, hey, why can't I do this in a lamp environment in shared hosting and domain of one's own? And the answer there is pretty simple of like, hey, sometimes applications require different software to run. And many times right away, containers is the answer of how do we make that software manageable? So we're gonna talk a lot about that throughout the series, but that's objective one is getting you some foundational understanding of what they are and why we use them. And the second one, a second major objective is just to get you in there trying some stuff. So we're gonna, throughout the next couple weeks, have you run a couple different applications alongside us, but I would also mention if there's applications that you are interested in running, especially as we get to the later weeks and you wanna try them out yourself and share how that's going in Discord or maybe get help or advice, please do that, this is what this is about is just trying to get some stuff running and working and talking about what we need to do as we go. So with that kind of preliminary stuff out of the way, I'm gonna pull in Jim here and he's gonna get us started with what are containers? What are we even talking about? Yeah, that's so you know that you're in trouble if I'm getting you started. So one of the things I've been obviously trying to think through and work through containers because I do think they're valuable for higher ed and I am excited about what they could mean. And I do wanna actually give me a second. I'm gonna just go to perfect and then watch this as a little trick. You can't do this necessarily with containers. This is not, you know, this is not included but this is beyond, this is the next workshop, ready? You can shrink yourself, right? And there is something to do with scale in containers and we will talk about that. But for right now, I will want to talk a little bit about what I think is so compelling about the world of containers. And it's not so much the technology although it definitely is that too, but it is the metaphor because when you think about containers, I don't know about you. The first thing I think about is this, shipping containers. I think about the shift probably in the 70s and 80s where you had a whole industry go through a radical shift in how they moved goods and services around the world. And in fact, books have been written about this phenomenon. For example, Mark Levinson wrote a book called The Box which talks explicitly about the shift in the 60s and 70s that took shipping into a whole new era of kind of efficiency, global networks, et cetera. And there were a couple of points he made that I think are interesting. And amongst them and probably the most important was the broad standardization of a shipping container. That means they were all essentially the same size. They all essentially had the same hookups and they worked across a vast amount of kind of infrastructure. That would be everything from cranes to high lows to ships to wagons to trains to trucks. They worked across all of that infrastructure for transport and hence made it far more next point flexible, right? You could run and put them anywhere but also ship just about anything you wanted whether it's services, goods, commodities, refrigerated stuff, it was a kind of predefined space that you could fill with what you wanted, right? And by that nature, it had this economy of scale where you could do things cheaper. Because you had the infrastructure already built, it was more efficient, it was faster, it excluded a certain amount of labor. The stevedores that traditionally would load and unload these infrastructural containers were no longer needed. So it changed the whole very logic of labor and transportation. And finally, a big thing about shipping containers is you couldn't really get inside of them. So the people who would go and pack and unpack didn't actually access the container. It was accessed on the back end by the person who was receiving it. And what this meant was you had far less loss, spillage and theft. So in many ways it was a lot more secure. Now that's a kind of interesting shift. It took decades for this shift to be realized but by the 80s and 90s, pretty much all global shipping was happening via containers. But what does that have to do with doctor containers? Well, I think everything, because Docker understood that shift in the 60s and 70s with shipping containers and actually used it as a metaphor for us to understand the shift that's happening in server infrastructure for probably the last decade now. And so one of the things that I'm kind of really compelled by is the container itself, like the shipping container is a lightweight predefined package for an application. Basically ship whatever you want within it. And so I think this kind of definition helps you metaphorically understand that what we talked about with standardization for the shipping container is actually also standardization that it would run across various operating systems, Windows, Mac, Linux, you name it, flexible. Pretty much you can run any application you want within a container. It doesn't really care, right? And that makes for the brave new world of there's so much to do, what do I do? The other thing is costs. And with every advantage, there's always a disadvantage, but containers by the way in which they work more efficiently on the server allow for it potentially to be cheaper to scale bigger. Whether it's always cheaper to run an application in a container versus on a lamp stack or something else is certainly a question that will come up and it's not always one to one, but in general to scale an application larger, it's cheaper. And finally security. The idea of a container for a server infrastructure is that it's isolated, it's containerized, right? And so by that logic, it protects itself from potentially a malware or some sort of breach affecting other containers on that same server. So in some ways, just like with the shipping container the actual server container is safer because of that isolation and because it's locked down usually to a single application. So hopefully my metaphor didn't break down too much but I think that for me is what got me fascinated about containers was the way in which Docker which didn't invent the container but I think in some ways they brought the idea of the container to a broader public into a broader server admin audience by understanding it in relationship to a historical move of shipping containers and what that meant for infrastructure and deploying and shipping not only goods but now applications. So I hope that worked. Taylor, back to you. Sorry, yeah, that was messing up my video stuff here. Yeah, I really love that metaphor too because unlike honestly a lot of tech metaphors it has a lot of valid levels to it, right? Like in one of the things you said early on was that there's a standardized outside. Well, obviously the implication to that is that the inside is not standardized, right? Because you can put whatever you want into it and so that is exactly what we're doing. That is exactly not only what we're doing with containers but that's the problem we're trying to solve is by saying, hey, applications on servers nowadays can be almost anything, right? Dependency and language and whatever wise. So in order to make this manageable at all we have to take that infinite possibility and wrap it in something that's standardized on the outside. So, absolutely. And the other thing, no, the labor at the point but I love it, so. Your point is well taken and I think the other point there is Mark Levinson's book came out in 2006. We released in 2016 and again that was to explain the phenomenon of global shipping but I think in some ways why we're doing this course and why we're excited about Reclaim Cloud is we're trying to help folks wrap their head around the phenomenon that's happening with containerization of applications and what that means more broadly. So there is a one to one but it usually takes decades for us to fully understand that shift unless you're at the cutting edge of implementing it. So I really think that's another primary objective like Taylor you pointed out at the beginning. So I'm excited about that just for myself because I'm still trying to wrap my head fully around this to teach more people more about containers. Awesome. Yeah, so I kind of want to shift gears here a little bit and talk about Reclaim Cloud and the interface of Reclaim Cloud a little bit just to get everyone kind of situated and comfy in their cloud, in their cloud living room, let's call it but a couple of things, like I said earlier there is a post up on ReclaimEd.tech and LinkedIn Discord as well that outlies a few things. We want to make sure you have a cloud account ready to go ahead of time but let me kind of walk you through a few things here. Anytime we're accessing Reclaim Cloud we can go right to Reclaim.Cloud that's the URL and there's of course the login button at the top right so that'll get you set up. And I did want to mention as you're using Reclaim Cloud and other things like this main landing page is worth a look. Some of the container stuff we're talking about is here there's some pricing information that breaks down scaling and all that kind of stuff. And if you have questions about that you can always throw that in the Discord but there's a lot of good stuff here that I would also recommend checking out. So once you get logged in and I'm already logged in of course but once you get logged in you will have something like this. So if you already had an account and you are already running things you may have stuff listed in here. I mean an environment group here to kind of have it be a fresh start like is likely for you is it where you're set up at but yeah so a few things that you'll need to know the right away. In this interface there is there is kind of a few main buttons here at the top left. There is import which lets you like import installer scripts for Reclaim Cloud we're probably not gonna use that it's more of an advanced option. New environment is for creating environments from scratch that are honestly more for developer folks who want to like hey I need a bare Python environment so that I can run my Python app. We are gonna do almost everything in the marketplace and honestly that's how most of the time how things go. So if I click on the marketplace here there's categories of preconfigured applications and server setups and things like that but you're gonna wanna go right to Dev and Admin tools and in the list should be Docker engine CE and you can click the little star button to favorite that and then it'll show up in your favorites category. I would recommend doing that because we're gonna be using this container quite a bit to run stuff in Docker. The basically what this will do is this will give us an environment in Reclaim Cloud that has Docker set up and ready to use so you don't have to install Docker and Docker compose things on your own. So if you go into your marketplace and now we'll hit install on that it's gonna ask what version of Docker. This is the latest version that's available in Reclaim Cloud right now so we can just leave that. All of these options we're not gonna need. So the main things we'll wanna look at is the environment, display name and region. For environments, this will affect the URL that you can view your applications you're running at. Basically one nice cool thing that Reclaim Cloud does for you is you get before you even map a domain name to anything you get a URL through what's called the shared load balancer that you can use to view your application and this is super nice because it allows you to give nice names of things and not have to worry about IP addresses. So you can name this whatever you want. It is not something that you can change after you've deployed, excuse me, after you've deployed a environment in Reclaim Cloud. The only way to change it is to clone it. So and that's pretty easy to do but generally you wanna give this some name that you can reuse. Sometimes I'm honestly if I'm gonna be mapping a domain to something anyway, I honestly just leave the automatically generated name. It kind of doesn't matter but in my case, I'm gonna call this Docker test and it looks like that's already used. So I'm gonna name it Docker test three. Oh my gosh, that's already used too. How about Docker test 100? Maybe test is not allowed in there. Docker Taylor, great. Then display name. Yeah, the pressure's on, you know. The display name. This is really just for you. This doesn't matter. This can be changed at any time. This will, I'll show you what this looks like but I'm just gonna call this Docker Taylor test. Test is fine in there. And then finally the region. There's several regions in Reclaim Cloud to be perfectly honest, unless you are doing something that is scaling across multiple regions for like high availability or you're doing something that's extremely latency sensitive, you're gonna be fine with any of these regions for just about any web application in my experience. But we are gonna avoid US East right now and that's simply because at the time of this recording we're dealing with a low availability of IP addresses and we're getting that worked out with some of our vendors but basically there's a good chance that if you, if we all in this course deploy to the US East data center and request an IP address for our environments which is what this will do, we may be out. So I'm gonna advise, let's just use US West. We can all standardize on that. Like I said, it's really not going to matter for whatever purposes we need here but yeah, that'll make things easier. So finally I'm gonna hit install and that will get it going. So basically it's setting a container up for us and it's installing Docker inside of that container and getting things ready. So I'm gonna click this little arrow button and that will send this down to the bottom right and I can close my marketplace. That's gonna keep running even if I closed this tab it's gonna keep doing its thing in the background. So while this is going, I'm gonna take a chance to just mention a few other options here that you should know about. So there's the balance button in the top right of Reclaim Cloud. This button will, it should make this stuff a little bit bigger. This button will allow you to do things with your account, put credit on it or set up automatic billing. There's, if you are just started with the Reclaim Cloud account there'll be an upgrade button in here that lets you add a payment method. If you have that upgrade button in Reclaim Cloud that means you're in trial mode so you're gonna wanna get out of that because after two weeks trials are over so we don't want you to have your environment stop working for you at that point. So, but this balance screen is really cool. There's some shortcuts to information on quotas like how much does do things cost by unit of compute or cloud lit is what those are called in Reclaim Cloud. Like I said, you can mess with payment methods, you can view billing history. All kinds of stuff is available in there. Again, I'm not gonna go super far into it but I just wanna mention that that's where that stuff is and if you have questions, definitely feel free to ask. We can discuss that in the Discord. The other thing is this settings tab. So you won't need to be in here a lot but there are a couple of things I wanted to mention while we're waiting on our Docker engine to deploy here. So the first one is SSH keys. We're gonna do everything in Reclaim Cloud for this workshop all in the web interface. And you can do pretty much anything you'd ever wanna do all in the web interface but I wanted to mention that if you are a person who likes to use a local terminal, you can connect to Reclaim Cloud using that local terminal. You just need to generate a public private key and you would add it in here. And the other function in here I wanted to mention is sharing. Environments in Reclaim Cloud can be shared kind of like Google Docs. So you can put in the email address of someone who has a Reclaim Cloud account and they will get access to your environment and then you can manage what level of access they have. Do they have access to the file system and SSH or just to see things and billing? So that's one kind of really cool thing about Reclaim Cloud. Again, I'm not gonna go into all that right now. Just know that you can do that. You can even change ownership so you can take an environment you've built and move it to somebody else after the fact. So all of that's really cool and that kind of stuff can happen right in this settings panel. All right, so the environment Docker-Taylor test is here, this little icon here and this little green with blue squares. That's the environment in Reclaim Cloud for, sorry, that's the icon for a environment. There's a lot of drop-down stuff happening in Reclaim Cloud. So it's good to point this stuff out because it's easy to miss things. So first of all, you can take an environment and collapse it and these nodes and nodes in Reclaim Cloud are the individual containers that make up an environment. So in a lot of cases, we may have more than one node. So basically more than one container doing different things in one environment. A good example is sometimes you may have a large application that has a container that's running the application and another one that's doing the database and another one that's handling load balancing to do HTTPS and stuff. And you might say, why would you do that in multiple containers? Well, sometimes that's the way application is written. It wants it to be that way, the developer intended it that way. Sometimes it's a way to manage scale for really high traffic things. But in our case right now, we just have one node, my Docker engine node, inside this one environment. So I can also do more drop-down stuff in here. You'll notice that there's this node ID. And if I click on that, this is where you can find the IP addresses for your environment. This is really handy, especially if you wanna map domains later on. We'll do a whole session that includes that, but I just wanted to mention here that whenever you see an arrow pointed to the right, you may want to reveal it. That's like an old like 90s UI term, like reveal disclosure triangle. Is that what it's called? Yeah, all this needs is, I think someone, do they call them frames? And it's perfect. Yeah, it all needs to be HTML frames with the blink tag. But okay, so there's a couple of things. And again, to point out the difference between environments and nodes, you'll notice as I'm hovering over stuff, different buttons show up and they apply differently if I'm on a node or an environment. So in an environment, there's a few different buttons here, but the big one you're gonna want to know about right away is this change environment topology. When I click on that, you get a window that lets you adjust the scaling of a environment. So this is essentially how much resources an environment is allowed to request and use. So right now, our environment's use is allowed to use up to four gigabytes of RAM and 12.8 gigahertz of CPU. That's kind of a weird number because it's actually multiple cores in a CPU, but it's running all the numbers together. So, but the reason it does it this way is this matches up more closely with billing with how that works. You get some estimated costs over here and you can view it by hourly or monthly. Again, we can talk about that, but note that this $80 number is only if it was using all of the resources it had available to it every second of the month, which is basically never the case for anything you're gonna run in Refinem Cloud. I don't wanna say never. I'm sure there's some things that will do that, but that's very, very uncommon. You can change how much disk speed space you're allowed to use or an environment, sorry, an environment is allowed to use it or in the individual node, you can allow it to have an IP address or not. IP addresses do cost money. A lot of the, for most of the stuff we're gonna be doing in Docker, we are gonna need an IP address. So, that's gonna be on by default, so. And yeah, and we'll do more with this screen later on in terms of adding more nodes to the environment, but wanted you to be able to see that this is the environment topology and any changes you make in here, you can then apply or cancel. I didn't change anything, so I'm just gonna cancel. You can also stop an environment from here and that will stop everything. You do not get billed for the RAM and CPU of a container when it's not running. You can delete things from here. You can clone them, so this is a great way to make a backup. If you've got an application that's running and it's doing well and you wanna test like upgrading it, this simple is just cloning this, running the upgrade, and if that works well, doing it on the production one and the same thing on the production one and you're ready to go, or maybe even swapping the domain over to the new one. So, that's because we're doing this in containers, that's like dead simple to do. There's also settings for the entire environment. We're not gonna get real far into this right now, but just to mention that the environment has a settings panel as well. Yes, it is stupid that there's a settings panel for your account and a settings panel for your environment and they're both called settings. I agree. But this one's a yellow icon and that one's a gray icon. But you're not bitter. You agree but you're not bitter, right? Yeah, it's a tricky thing and if I was designing this myself, I'd probably make all kinds of other mistakes but this is something I think I would make the right choice on and I would name them differently, but whatever. All right, so now into an individual node. Some nodes have add-ons that allow you to add simple FTP access and schedule the starting and stopping environment or maybe do automatic HTTPS for you, something we'll talk about later. You can restart a node. There's a log viewer, there's redeploy. You really wanna be careful because redeploy is essentially re-downloading container and putting it in place. So depending on how you have things set up, that may overwrite files for you and we'll talk about what that would or would not do for the thing but just be careful about that option. There's a bunch of other more advanced stuff in here, some of which we will get into later but ones that you'll need right away first is the config panel. So config allows you to browse the file system of a Reclaim Cloud node. So right now I'm at the root here. If I go click on this top here and I can go into maybe the root folder, the root users folder, I can use this little thing to make new files or folders. You can edit stuff within here. So now I'm editing text and you can save it. It's a little file manager. You can download stuff and upload stuff from here although you're limited in size. I can't remember off the top of my head what the limit is. I wanna say it's like 10 or 20 megabytes. It's not real huge. Yeah, it's not very big. If you're doing things like video, you will probably wanna use SFTP to do that. And again, I can link to instructions on how you do that. If anyone needs to do that, you won't really need to do that for this workshop. Because we're gonna be dealing with texts, all texts. So, all right, so that's the file manager. And then this one, we're gonna be doing a lot in here, the web SSH panel. So if I click on that on a node that gives us a terminal session inside of the container that we clicked on. Again, it's really important that you're opening a terminal for a node, right? An individual container. Later on we'll be doing things where we have an environment that may have more than one node. So it's really important that you know what terminal you're in. The cool thing is it does label them. So right here it says engine node. Yep, that's the name right there. If I was to change this name, and you can change the name, it would reflect that name change when I opened a new terminal. So, yeah, so the web SSH gives you a terminal. It, you know, it does all, most of the things a terminal does. We're gonna be using this to do various things with Docker and stuff like that. But just to quick demo before we get out of Reclaim Cloud and kind of wrap up the session pretty soon here. I'm gonna run a quick command in this terminal. I mentioned before that this container comes with Docker pre-installed. That's the advantage of it. So we'll just use the Docker's own Hello World container. Real quick, and this will pull down the container and run probably one of the smallest container programs that we will run. So there we go. Docker works. So we'll do a lot more with this in upcoming sessions, but I would recommend for next week's session getting logged in, deploying a Docker engine container like I did and running Docker run Hello World just to make sure that you got everything right. And if you have any questions with that, let me know. When you're done with that, you can either shut this environment down or delete it if you want to because we'll start a new one fresh next time. But yeah, that'll be a good test. It's not real exciting, but I don't know. It's exciting to me. We're emerging on a journey. So... Oh, it's exciting, Taylor. Let's not miss that. It's very exciting. And you did a very good overview of what they need for Reclaim Cloud to get up and running because one of the things, it's kind of almost the logic will start to get a little tricky in some ways, but like all of Reclaim Cloud is containers. Every node is a container and the environments are made up of containers, as you said, Taylor. And so like it's a completely containerized environment. So getting a kind of account there gives you an interface like for you to start playing with applications and getting your hands dirty. So that would be step one. So I really like that we started there. The last thing I want to do here is quickly run through our glossary. So we are going to have a glossary for the course that we'll be posting to Reclaim EdTech. I've got it here as some slides, but I think we'll list it out as a better format like on the actual webpage. I'm just going to go through a couple of terms in it that are relevant for today. There's already more stuff in the glossary and we'll be adding to it as it goes on. But I want you to be aware of it. If you want to peek at what's ahead, you could look at future terms in the glossary. But yeah, so we're going to be adding to this. It'll be hopefully a really helpful resource for you because so much of this stuff is really terminology heavy. So here is our glossary here. The first one is containers. We've been talking a lot about containers. We've been talking about containers the whole time. But one thing I wanted to make a distinction of is that, yes, there are containers in Reclaim Cloud and then Docker containers are also containers. So we're talking about running containers inside of containers. This can get really confusing really fast if we don't set some context and ground rules. Reclaim Cloud. So these are containers that you can deploy. They're customizable. They're always Linux based application containers. You can get root access to these containers. You can install whatever software. It's very similar to using a virtual machine. If you have done that maybe in a different cloud or something like that, you have the same type of access basically as a virtual machine. You can install software. You can treat it like any Linux server if you've worked with Linux servers before. One of the things you can do in them is run Docker engine. And that's what we're gonna be doing. Docker containers. These are containers that are built by developers. Often the developer of whatever application you are trying to run, but not always. Sometimes someone will develop an application and then get someone else or someone else will take it upon themselves to containerize the application. That way it's easier for others to run. So these are built by developers to run a specific thing. That you can technically install software in them if you know what you're doing, but you never would want to because one of the things that happens with containers is when they update any changes you make to the base application container, get overwritten. And we'll talk more about, okay, what does that mean for my data and stuff in future sessions? But typically you're not making major customizations inside of these containers, unlike Reklind Cloud ones. These containers can be run on your local computer technically. If you wanted to, you could install Docker desktop and try containers out, although some networking stuff gets tricky. And I think we'll touch on that at a certain point. Probably next week already. But that is technically possible. We are gonna focus on running them in Reklind Cloud because that gives everyone the same environments. Not everyone's gonna have the ability even install Docker on their machine, depending on how locked down their machine is and if it's owned by a corporate or education IT. Sometimes that won't be an option. So we're gonna do this all in Reklind Cloud and it also makes a lot of the networking stuff very simple. But yeah, you can run these Docker containers on a computer or anywhere you can install the Docker engine like a Reklind Cloud container. Some Reklind Cloud specific terminology. Environment and node. I already talked about this a little bit, but environments are groups of containers. So in this case down here, I've got a container called hedge or an environment called HedgeDoc. And it has two nodes in it. In my earlier thing, my environment was called Docker Taylor Test, right? So these can have multiple containers in them. A node is a single container in Reklind Cloud. In some cases, you may need more than one node, like I said, in the environment. So it's important to know the distinction. When you're doing things like changing editing files using the config panel or the web SSH terminal, you're doing that in a node. You're doing that in an individual container. From now on, I'm gonna do my best to only refer to them as nodes, which is what Reklind Cloud calls them. That way we can try to avoid confusion between the word container and reference to Docker containers and container and reference to Reklind Cloud nodes. I'm surely going to mess this up. Like that is gonna happen, but I'm gonna try to make sure that I use the word node just to make sure that that distinction is clear. But yeah, long story short, environment, bunch of containers, node, single container, an environment contains many nodes, potentially. And then the final thing for Glossary this week, and this is a bad Glossary, right? Because Glossary should have the word at the top and in my case, I haven't done that, but whatever, is the concept of pulling a container. And I mentioned this, we did this. When I did the Hello World, we technically pulled down a container from a registry and ran it. So you will see a Docker pull command someplace on the web, and that's what this is referring to is pulling a container. So you're getting a preconfigured application container from a registry, and it also allows you to update that container. So you can pull new versions and you get new versions of the application. Lastly here, I think I said three slides and I totally lied, we're gonna do four, but I want to allude to Docker Hub. So you might have said in the last slide, well, what's a container registry? And that's just simply a place where people upload containers for others to use. And Docker Hub is the main one. It's the default one in Docker. It's the one we're gonna be using all the time. To be perfectly honest, I'm not even aware of other container registries. I know they exist, but I haven't used them, is my point. So this is the one we're gonna be using. We'll explore in the next session a little bit around Docker Hub and what's there and what you wanna look at when you're evaluating containers. But that's your teaser, basically, because good teaching needs cliff hangers, right? Is that, that's a thing, right? Or no? I think so, no, you're right. Tune in next week for, but I really like the idea of your glossary. I'm loving that and I'm loving seeing that get built over time as we do this class because it's really useful to go back and find those tools. And I like that you're kind of using it as like a cultural, almost phraseology, like pulling a container, like where you have it in quotes and giving people a kind of definition for the concepts they're gonna hear. So it's very much a conceptual work through with some of the things that are gonna be new because that's really what we're gearing this towards. Folks who wanna start to wrap their head around Docker and get a sense of what it is. And so this means getting up and running with Reclaim Clouds to have a place to work, working through some of the very basic ideas that have been talked about in the glossary, reading the post for week one so that you can kind of play with that. And then like Taylor said, reaching out to us in Discord, we'll have a channel there and we'll be interacting with you, questions, concepts we wanna build out from this weekend. So, and also keep tuned if we do any live events or share stuff we're doing with Docker on the fly, that will happen there or elsewhere in Discord as well. So stay tuned.