It's hardly an exaggeration to say that there hasn't been an innovation in app development and deployment over the past year or two that's been bigger than Docker. The open source platform for building, shipping, and running distributed applications in isolated virtual containers has literally changed the very fabric of the cloud. Thanks to Docker, software developers can reliably create and deploy applications with all their dependencies in Docker images that can be made available to anybody, and launched in seconds.
This introductory course, crafted by the expert Linux System Administrator David Clinton, will teach you everything you need to know to get started with Docker: What is the LXC software that it's built upon? How is it different from traditional virtualization technologies? How you can install and run it on your machine? By the end of this course, you'll have all the basic tools you'll need to run simple Docker applications.
Who should take this course
Being an introductory course, no previous knowledge of the software is needed. Nevertheless, you will definitely need at least some experience with the Linux Command Line Interface. Also, some familiarity with the Linux file system, kernel and networking basics might came in handy for some lectures.
Do you have questions on this course? Contact our cloud experts in our community forum.
Hi, and welcome to CloudAcademy.com's video series on Docker, the development oriented virtualization service. In this video, we're going to compare Docker and its parent LXC to slightly more traditional virtualization tools like VMware's virtual machines. Obviously, there's no one tool that's good for every use.
How is Docker different from VMs?
There's a place for VM and there's definitely a place for Docker. We're going to explore some of the specific benefits of each. Number one, Docker is resource-light. It shares kernel resources with all the other virtual and bare metal software running on your machine and therefore you don't need the installation footprint that a VM would need which of course installs an entire operating system separately. Each VM represents a full operating system sometimes gigabytes in size. Because it's so light on resources, Docker can start up incredibly quickly and shut down just as quickly. Sometimes in less than a second.
Also because of their light touch, Docker instances can be more densely packed on servers, which can be hugely advantageous in a cloud environment where fractions of pennies can sometimes make or break a project. If you need less storage space, if you need less memory, if you need less computing space, or computing resources you can fit more VMs or docks I guess you'd call them into a particular hardware profile. Docker includes an ecosystem of app repositories.
Thousands and thousands of free app repositories that can do just about any task you might want to do either natively or with a little bit of tweaking. This will speed and cheapen the process of doing just about anything. One of Docker's biggest advantages is standardization.
That is you can create a Docker repo and be confident that whoever pulls it anywhere in the world on any platform it'll perform exactly the same way. With a VM, you have to build each instance for each place and time it's being used. That takes a lot of extra effort and it eliminates the confidence that Docker users have in their own repos.
Docker is extremely scalable. I saw this quotation from Eric Brewer, the Google Vice President of Infrastructure on informationweek.com. He said apparently everything at Google from search to Gmail is packaged and run in a Linux container. Each week we launch more than two billion container instances across our global data centers and the power of containers has enabled both more reliable services and higher more efficient scalability. If Google can do all that with containers the same type of containers that Docker offers then it really isn't too much that we wouldn't be able to do. Docker's also extremely good for QA and unit testing. If you have hundreds or even thousands of tests you need to run on an application, they have to be run in order. In other words, you run one test but that changes the system.
You have to roll back the changes and run the second test, and the third test and the fourth test. That can take a lot of time. With a Docker repo though, you can effectively pull the repo a 1,000 times and run the 1,000 tests simultaneously taking a whole lot less time to get it done. Having said all that there is a space for the more traditional virtualization tools, like VMware. For one thing, there may be use scenarios where you need a GUI, where there has to be a graphic user interface and that simply doesn't exist as far as I know in Docker and certainly not in LXC's.
Docker use cases
Also, Docker is best suited to single focus operations, let's say an nginx server. But for those relatively more complex server operations, which might use a number of different resources running at the same time and in conference with each other perhaps you have to come onto either a VM or an LXC, which is a more robust version of the Docker virtualization.
LXC's and Docker containers owe their remarkable efficiency to the use of Linux Cgroups and their related name space isolation, which serve to dynamically isolate processes from each other allowing them full access to appropriate kernel resources without exposing other resources and processes to any risk. This means that any number of containers can fully share the computer resources of their hardware host.
VMs on the other hand have to fire up a full virtual OS for each virtual instance meaning that there's an enormous duplication of effort and an associated drain on system resources. The host of a VM is often called a hypervisor as opposed to just host of an LXC container. However, it's worth noting that many LXC users will also refer to their host machines as hypervisors.
David taught high school for twenty years, worked as a Linux system administrator for five years, and has been writing since he could hold a crayon between his fingers. His childhood bedroom wall has since been repainted.
Having worked directly with all kinds of technology, David derives great pleasure from completing projects that draw on as many tools from his toolkit as possible.
Besides being a Linux system administrator with a strong focus on virtualization and security tools, David writes technical documentation and user guides, and creates technology training videos.
His favorite technology tool is the one that should be just about ready for release tomorrow. Or Thursday.