Why Should You Use Docker?

Bret Fisher
A free video tutorial from Bret Fisher
Docker Captain and DevOps Sysadmin
4.6 instructor rating • 4 courses • 246,020 students

Lecture description

Learn about the origin of containers and why Docker is the right tool at the right time!

Learn more from the full course

Docker Mastery: with Kubernetes +Swarm from a Docker Captain

Build, test, deploy containers with the best mega-course on Docker, Kubernetes, Compose, Swarm and Registry using DevOps

19:15:20 of on-demand video • Updated April 2021

  • How to use Docker, Compose and Kubernetes on your machine for better software building and testing.
  • Learn Docker and Kubernetes official tools from an award-winning Docker Captain!
  • Learn faster with included live chat group (21,000 members!) and weekly live Q&A.
  • Gain the skills to build development environments with your code running in containers.
  • Build Swarm and Kubernetes clusters for server deployments!
  • Hand's-on with best practices for making Dockerfiles and Compose files like a Pro!
  • Build and publish your own custom images.
  • Create your own custom image registry to store your apps and deploy in corporate environments.
English What is Docker? What is it about? Why does it exist and why should you be learning it? This short video will cover the whys and whats of how it got started, what problems it solves and why you should be checking it out right now. Docker was released in 2013 as an open source project by a company known as dotCloud, which was a hosting company that isn't around anymore. In fact, within a year of releasing that open source project, it became so big that they changed their company around and basically closed the old company, started a new company called Docker,Inc. And away we went. Now, here we are, over five years later, and everything has been changing. We have a huge shift in the ecosystem. Let's just talk about, real quick, what this is all about. I want to just say that this is a huge shift. In fact, I cannot understate how important it is that you learn Docker if you are in any form of IT. Whether you're operator, a sysadmin, a developer, a build engineer... you need to jump on Docker because its going to be that advantage that you're going to have for the next job, or even the job you have now, when your company goes to Docker. Notice I didn't say "if." It's when. This is a huge shift that we will all eventually have to take part in. We've seen this before. I've been around a long time so in the 90's, I actually got to be a part of the mainframe-to-PC wave where we shifted from a traditional mainframe architecture that had been around for many, many years to a PC distributed architecture where we're putting in Mac and Windows and DOS, if you remember that back then. We were changing out our networks and putting in fiber Ethernet and Ethernet 10base-t and TCP/IP. It shifted everything. Took years to do. But just a few short years later, not even 10 years later, we were changing yet again. In the data center and in our servers, we were shifting to virtualization because our servers were too powerful, and we had a lot of idle time, and we needed to get better utilization. So, we started creating a lot of OS's inside a single piece of hardware. That was virtualization. VMware, Hyper-V and all that stuff. We don't think about it now. Those are defaults. We all use PCs by default usually. We're all going to be using virtualization in some form. The next wave right after that was Cloud. Within five years of virtualization, we had the Cloud starting up in 2007/2008 when Amazon released the AWS solution. That was the first real idea we had around easy, cheap, disposable compute power that we could spin up and shut down really quickly from a website. No one had done that before, that easy, and on that level of scale. So it really shifted the landscape and helped us all to get to where we are now, where everybody is using the Cloud in some form. Then we have the next wave, and that's where we're at now, which is containers. Now, containers would also include server lists, or functions as a service, if you've heard of that technology, because all those things were made possible by containers and run inside containers to do their work. But fundamentally, it's the shift to containers as the next object of compute. You'll see very soon where it's the default for us to all assume that you're running your stuff in containers. In fact, these waves are happening faster and faster. You'll notice that each one is happening quicker and it gets adopted even faster than the one before it. And this just makes it harder for us to keep up. Right. So, that's why we're here. To learn about Docker. The real hard parts about these migrations is the migration themselves. We all have to learn new tools and workflows, and we all have to get up to speed on the terminology and the way to do things. The nice thing this time around is that the Docker tools were really created from the get go with the developer in mind, which means that they work just as well for developers as they do for sysops and operators. The problem in a lot of these previous technologies was they were really just built purely for sysadmins, not so much for developers. This time around, the solution is an inclusive solution that includes developers, build engineers, testers, operators, sysadmins and everyone in between. You'll probably see, if you've done any research, various quotes like "the containers are the fastest growing technology" and "there's going to be everybody using it by so many years" and these are all industry analysts predicting how fast we're all going adopt it. At this point, if it's a global company, they are using it somewhere in their company. If you look at the other metrics, like job postings for people needing to know Docker to get jobs, or the number of downloads of Docker applications, these are just off the charts. Right. These are another way of seeing how the move to containers is just sort of eating the world. Before we get into what Docker actually does for you, a quick little piece of trivia. If you've probably seen the Docker logo, which is known as MobyDock, it's been around since the dawn of Docker and it's their logo, right. But it's not actually their mascot. Their mascot is Gordon, and he's a real life turtle that happens to live in San Francisco. He stays a couple of days a week at the headquarters there, and he actually started out with Docker five years ago really small, and you could fit him on a keyboard. You could sort of put him on a computer, make him look like he was working on the laptop. Now he's so big that it takes like two people to carry him around. He's huge. So, he's a real-life turtle, but he has his own Twitter account. You can get him @gordonTheTurtle where he has some illustrations that sort of make fun of how he wishes he was the Docker mascot and he has sometimes evil plans about how to go about that. Getting back into the seriousness of this, why do you need Docker? What is the real benefit? And that is all about speed. In fact, all these major shifts in infrastructure have always been about speed. About the speed of software deployments, the speed of business and getting things done in a company for profit. You'll see big benefits in all these areas as you adopt the various tools of the ecosystem. But it really covers the entire life cycle of software management. This gets us to the "Matrix of Hell" story which is really around. If you don't have containers today, you're probably dealing with something like this. You have multiple types of applications: frontend, backend, workers, middle tier. You've got a lot of different things that all need to work together to run your software. Those all will have their own dependencies, their own requirements. They might even run on different operating systems or different clouds. Then you have them running on developer machines, and in testing infrastructure, and then in production, and maybe it's in a data center and also in the Cloud. It's complicated, right. We have a whole lot of different ways of dealing with that. But the way that containers do it, now, is it's consistent across the board. It allows you to package the same way regardless of your operating system. It allows you to distribute the software regardless of the setup. It allows you to run and test the software the same way everywhere you're running it. Mac, Windows, PC, cloud, data center, edge devices. It doesn't matter. They all run the same way fundamentally when they're using Docker, and it makes a lot of the pain problems around the software life cycle much easier to deal with. The reason that we care so much about this is that if you've been here long enough, you know that we have created tons and tons of software in the last 50 years. All the software that we've developed on mainframes, which is a lot of it's still around, PCs and now on in the Cloud. All this stuff requires maintenance. We're now saying that 80% of the time of a typical IT person is spent managing that existing software. Keeping it updated. Keeping it running. Fixing its problems. Backing it up. All those various things of existing software. This leaves very little time left for us to make new things, right, and to deploy new software. So, Docker is freeing up a lot of those tasks of the maintenance of stuff and allowing us to get more of our time back to innovate. Docker, the company, likes to throw around numbers around who's using their products, but it's a really good indicator of just how many big companies around the world are now adopting containers in some form. That's basically everyone you've heard of. The two that I like to talk about are PayPal and MetLife. Paypal has over 700 applications now that they have taken that predated Docker and they've containerized them, or they have converted them into container-based applications, and these applications didn't require any code changes to do that. That's one of the great things that helps containers get adopted so quickly is it doesn't... you don't have to rewrite an app. You don't have to make a special application for containers. It's just a different way of running and packaging the application and moving it around your infrastructure. The other one is MetLife. MetLife has huge savings in their infrastructure because they were able to use less operating systems to manage more applications, and that gave them a lot of their hardware back. They were able to save a lot of money on infrastructure and cost reduction. Between these two, you got huge developer productivity, and you've got huge infrastructure savings. This is kind of the typical numbers we see on large projects of people adopting Docker. Now, Docker started, and still is, largely open source. So every year on the month that the Docker project was originally released in March, there's a party around the world. Basically, all the various meetups around container technologies get together and celebrate Docker releasing, and we have sort of a party with birthday cake and we have fun, and there's workshops. I run one locally. Hopefully, there's one near you. It's another way to get involved with the community and learn Docker. If you're new to Docker, and if you're watching this video you probably are, there's lots of other pieces to the puzzle. Docker is the core essence that you need to understand first, but once you move beyond that, you're probably going to want to check your other tools that you use now, or what tools you might need to use to fill the gaps in your toolset. There's a great series of posters and diagrams that describe a lot of these things at this URL on landscape.cncf.io. And the Cloud Native Computing Foundation, who maintains this stuff, is one of the foundational supporters of a lot of these new technologies that are all container based. Next up, we're going to learn how to install Docker for your operating system and get you typing at the command line.