Get Hands-On Experience with BoxBoat's Cloud Native Academy
Kubernetes Training Fundamentals - Module 1 - Intro to Containers and Docker
by Mike 'MJ' Johnson | Thursday, Dec 13, 2018 | Docker Kubernetes
This series is intended to be a introductory look into Kubernetes. If your organization is interested in custom training around your infrastructure, please reach out to us at BoxBoat. We are both a Docker and Linux Foundation training partner and can provide onsite corporate training on Docker and Kubernetes.
Welcome to the first post in the BoxBoat Kubernetes Training Fundamentals course. We designed a blog and video series to get you familiar with the core tenants of Kubernetes and Docker container orchestration.
But first, an introduction. My name is Mike Johnson, but you can call me MJ. I am currently a Solutions Architect / DevOps Engineer with BoxBoat Technologies.
Some quick background on myself and on BoxBoat.
I have been in IT for over 18 years, largely focused on infrastructure and operations. The past few years I have spent the majority of my time on cloud technologies and DevOps working with large enterprise software companies.
BoxBoat Technologies helps companies develop, integrate, and deploy applications faster with emerging technologies like Docker and Kubernetes. If your organization needs help with anything DevOps related, please reach out to us on our contact page or call us at 202-420-9736.
Now, with that out the way lets jump into the course.
Kubernetes Training Fundamentals: Module 1 - Intro to Containers and Docker
While this series is largely focused on Kubernetes, we will start with a quick overview of containers and Docker. This series assumes you already have some knowledge of containers and Docker, but we wanted to just cover it at a high level before moving on the Kubernetes.
Kubernetes Training: Module 1 - The Video
We will be recording YouTube videos to walk you through these modules. If you prefer that, please enjoy Module 1 below. If not, skip past the video to get Module 1 in blog form.
Let’s first review what we will cover in this first module.
- What is a container?
- Difference between Containers and Virtual Machines
- Docker Quick Facts
- Why Develop In Containers
- How to Install Docker
- What is a Container Registry
- Docker Basics Demo / Lab
What Is A Container
Linux containers, in short, contain applications in a way that keep them isolated from the host system that they run on. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. (Source: OpenSource.com)
Recommended Reading: Containerization Crash Course - What is a Container?
Containers vs Virtual Machines
Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers typically take up less space than VMs. (Source: Docker.com)
Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, the application, necessary binaries and libraries - taking up tens of GBs. VMs can also be slower to boot.(Source: Docker.com)
Quick Docker Facts
- Docker is a container company that developed a Linux container technology - one that is portable, flexible and easy to deploy.
- Docker CE is a free and open source containerization platform.
- Docker EE, on the other hand, is a premium version of CE and is for-pay software. It comes with support from Docker.
- Docker CE and EE can run on all major OSes.
Recommended Reading: Docker Community Edition or Docker Enterprise Edition - Everything You Need to Know
Advantages of Developing Using Containers
Using Docker, you can develop in a container on the local machine and ship in a container, with code, settings and dependencies included. That means the environment in which you test is identical to the one in which the app will deploy in production. No more worrying about dependencies, software versions and other items that typically cause software to break during code promotion.
There is an abundance of ways to install Docker these days and Docker is supported on all major operating systems. We won’t take the time to run through all of them here, but we will do one better. Point you to the authoritative source for installing Docker.
Visit the Docker Website here to install on your particular system: How To Install Docker
The last thing we want to cover before we send you off to the is to give you a quick explanation of what a Container Registry is.
A container image registry is a service that stores container images, and is hosted either by a third-party or as a public/private registry such as Docker Hub, Docker EE DTR, offerings from AWS, Google, Azure, and many others. These registries will be where the images are “pulled” from down to the nodes that run the containers. For the purposes of this course, we will be using the Docker Hub as our Container Registry. You can check it out here: Docker Hub
For the rest of this series, we will be leveraging the Katacoda training platform. Please follow along at: https://katacoda.com/boxboat
Click on “Kubernetes Basics Training Series” to begin.
Once you have completed the labs, come back here so we can do some final review. Don’t worry about rushing through the labs. We will leave those online for you to use as a learning tool.
Module 1 Summary
We hope you found the above information and the labs helpful in beginning to understand the basic of Docker. Here is a quick recap of what we covered.
- Containers were originally a Linux construct leveraging cgroups and namespaces and Docker developed a container system around it.
- Containers are similar to virtual machines in that they are isolated entities but containers are smaller because they leverage a shared kernel while VMs each run their own. Because of this, containers are more portable and CAN start up much quicker.
- Docker Inc. is a company that develops and supports the leading container format. Docker is the default container system supported by Kubernetes.
- Docker Inc. develops and maintains 2 versions of Docker. Docker Community Edition (CE) which is free and offers no support and Docker Enterprise (EE) which is a for-pay product that offers various levels of access to Docker Support.
- Docker can be installed on all major operating systems and is supported by numerous container orchestration platform, particularly Kubernetes.
- Lastly, we covered what a container registry is and demonstrated some Docker command line basics.
Containers and Docker are a powerful tools and you should gain a solid foundation in containers and Docker before moving on to running Kubernetes in production.
If your organization needs help developing, implementing or deploying your software in containers, container orchestration, DevOps guidance, or Docker / Kubernetes training, please reach out to us at BoxBoat.
In the next video we will get an introduction to Kubernetes and start learning why it is the present (and future) of container orchestration. Stay tuned!