(Update) We’ve released new training material on Docker, including the Cloud Academy’s Docker in Depth Learning Path. This learning path is designed to teach you all about Docker starting from the individual container and progressing to the continuous deployment of an application in AWS. The Learning Path comprises of video Courses, Hands-on Labs, and Quizzes to test your skills. Visit the Cloud Academy’s Training Library for all our latest content on Docker.
Containers, and in particular Docker-based ones are the Big Thing everybody talks about and works with these days, and in fact, we frequently get questions about getting started with Docker. Many people and companies really take it to the max and try to do everything in them including tasks which in the past you had only considered full VMs for, like untrusted third-party tenants. Pretty much everyone uses docker or LXC now to deploy workloads, run CI tests, or even to have an insulated environment to develop applications with a specific set of libraries and a dedicated configuration. This is especially convenient when you want to share that all across multiple computers or with your colleagues.
So, what is this Docker everybody is talking about and how can you take advantage of it?
What is Docker?
We have a great course – What is Docker? and its first lecture is all about the question “What is Docker?”. The course goes in deep details about this wonderful open source software and the logic behind it. Nevertheless, Docker is basically a wrapper around Linux Container, another old software to create containers on Linux, as you might easily imagine. Actually, the latest versions of Docker are using a brand new library instead of LXC, but it’s a change under the hood with no impact on high-level functionality.
Since it exploits LXC (or this new container library), Docker containers are built on top of facilities like cgroups and namespaces provided by the Linux kernel, so they are not traditional virtual machines and do not require a separate operating system. Instead, they use those kernel’s functionality to completely isolate the application’s view of the operating system. So resources are confined, services are restricted, multiple containers can share the same kernel, but each container can be constrained to only use a defined amount of resources such as CPU, memory and I/O. If you add the fact that a Docker container can start in a handful of milliseconds, you probably now understand how cool the whole thing is.
Using Docker to create and manage containers makes it easier to create highly distributed systems by allowing multiple applications, worker tasks, and other processes to run autonomously on a single physical machine or across a spectrum of virtual machines. And that’s why Docker is finding its heaven in the Cloud, where a lot of providers, and especially tier-1 players like Amazon, Google and Microsoft are devoting some of their resources to add compatibility and support for Docker.
Getting started with Docker
Despite the huge complexity hidden under the hood, getting started with Docker is quite easy, also thanks to it Git-style syntax. If you are familiar with that VCS, and you probably are if you are interested in Docker, you will see many concepts shared among the two. The base to get a Docker container running is by starting an image containing all the files and settings and everything is needed to run the container. I won’t spend any more seconds discussing all the details about the Docker syntax and usage, as it is well-explained both in the Getting Started with Docker course I already talked you about and in its followup Dockerfile course
The key factor here is that it’s quite easy to grasp the basic concepts of Docker and that helped a lot in making the difference about its huge spread. In fact, as we have just seen, Docker has not reinvented the wheel, rather it wrapped around an existing, solid and well-working technology adding a set of features that helped it make the big jump. Nowadays, Docker Inc. is a well-established startup, who raised more than 40 millions of dollars so far, and is seeing a larger and larger ecosystem growing around it. In fact, many hosting services were born to help developers deploy applications and Docker containers on the Internet
Docker hosting services
Indeed, Docker hosting services are among the first companies born in this ecosystem. These are *aaS services providing virtual machines to deploy Docker images and/or container to, sometimes with a good degree of customization of the underlying infrastructure. Sometimes, these services also add APIs or other software layers in addition to the standard Docker features, making them full-fledged PaaS services.
We already published a comparison among the 4 most important Docker services in another post, and I really recommend you to read it if you are interested in learning more about them. Sometimes, subtle variations among the various services available can make a huge difference according to your needs, so ensure to read that post thoroughly. Nevertheless, after we published that post, the top players in the Cloud world made their moves to enhance support for Docker on their respective platforms.
Docker support by Amazon, Google, and Microsoft
Amazon announced a brand new service built on top of EC2 during the latest re:Invent. Actually, everyone was expecting a move there by the giant of the Cloud world, given that its closest competitors had announced something similar already. This new service has been called ECS, that is EC2 Container Service, and is currently available as a preview. The initial focus of ECS is to address multi-container multi-host clustering, which aligns with customer requirements for high-performance and scale as they move their Dockerized distributed applications into production. Amazon already had some support for Docker in its Elastic Beanstalk PaaS service, but this one looks way closer to the Infrastructure level, and we expect it will provide huge flexibility to the needs of the developers. We are looking forward to running an extensive test about this service, and you can expect a deep review very soon.
On the other side, Google developed dedicated support for Docker long before AWS. There is a specific service to help getting started with Docker on GCP, under the name of Google Container Engine. It allows to deploy and run docker container on GCP virtual machines, paying just for the Google Compute Engine instances that you will provide for your containers and no extra costs. The interesting thing here is that at the core of this Google Container Engine service there is another open source software that Google is actively developing, that is Kubernetes. This is a cluster manager for containers that can schedule replicas across a group of node instances. A master instance exposes the Kubernetes API, through which tasks are defined. Kubernetes spawns containers on nodes to handle the defined tasks. Also, the number and type of containers can be dynamically modified according to need. It’s a very advanced technology, and I’m looking forward to seeing Google Container Engine out of the alpha, as they may introduce backward incompatible changes until the stable version will be released. Google is devoting a lot of efforts and resources to this project and is probably the most advanced platform with regard to Docker support.
Microsoft recently added support for Docker containers too. The initial support for Docker on Linux-based Azure VMs has been added in June, but that was just the bare minimum they needed to make Docker available to users. Last month though, they took this thing more seriously, and they announced a stronger commitment in the field. In particular, they announced the open sourcing of Docker Engine for Windows Server, support for the Docker Open Orchestration APIs, and the Federation of Docker Hub images in the Azure Gallery. Although none of them seems as interesting as the dedicated services provided by Google or Amazon, the fact that even a company like Microsoft is showing such a great interest for Docker confirms how important this software it is and how crucial the container technology has become.
New on Cloud Academy: AWS Solution Architect Lab Challenge, Azure Hands-on Labs, Foundation Certificate in Cyber Security, and Much More
Now that Thanksgiving is over and the craziness of Black Friday has died down, it's now time for the busiest season of the year. Whether you're a last-minute shopper or you already have your shopping done, the holidays bring so much more excitement than any other time of year. Since our...
Understanding Enterprise Cloud Migration
What is enterprise cloud migration? Cloud migration is about moving your data, applications, and even infrastructure from your on-premises computers or infrastructure to a virtual pool of on-demand, shared resources that offer compute, storage, and network services at scale. Why d...
6 Reasons Why You Should Get an AWS Certification This Year
In the past decade, the rise of cloud computing has been undeniable. Businesses of all sizes are moving their infrastructure and applications to the cloud. This is partly because the cloud allows businesses and their employees to access important information from just about anywhere. ...
AWS Regions and Availability Zones: The Simplest Explanation You Will Ever Find Around
The basics of AWS Regions and Availability Zones We’re going to treat this article as a sort of AWS 101 — it’ll be a quick primer on AWS Regions and Availability Zones that will be useful for understanding the basics of how AWS infrastructure is organized. We’ll define each section,...
Application Load Balancer vs. Classic Load Balancer
What is an Elastic Load Balancer? This post covers basics of what an Elastic Load Balancer is, and two of its examples: Application Load Balancers and Classic Load Balancers. For additional information — including a comparison that explains Network Load Balancers — check out our post o...
Advantages and Disadvantages of Microservices Architecture
What are microservices? Let's start our discussion by setting a foundation of what microservices are. Microservices are a way of breaking large software projects into loosely coupled modules, which communicate with each other through simple Application Programming Interfaces (APIs). ...
Kubernetes Services: AWS vs. Azure vs. Google Cloud
Kubernetes is a popular open-source container orchestration platform that allows us to deploy and manage multi-container applications at scale. Businesses are rapidly adopting this revolutionary technology to modernize their applications. Cloud service providers — such as Amazon Web Ser...
AWS Internet of Things (IoT): The 3 Services You Need to Know
The Internet of Things (IoT) embeds technology into any physical thing to enable never-before-seen levels of connectivity. IoT is revolutionizing industries and creating many new market opportunities. Cloud services play an important role in enabling deployment of IoT solutions that min...
Which Certifications Should I Get?
As we mentioned in an earlier post, the old AWS slogan, “Cloud is the new normal” is indeed a reality today. Really, cloud has been the new normal for a while now and getting credentials has become an increasingly effective way to quickly showcase your abilities to recruiters and compan...
How to Go Serverless Like a Pro
So, no servers? Yeah, I checked and there are definitely no servers. Well...the cloud service providers do need servers to host and run the code, but we don’t have to worry about it. Which operating system to use, how and when to run the instances, the scalability, and all the arch...
AWS Security: Bastion Hosts, NAT instances and VPC Peering
Effective security requires close control over your data and resources. Bastion hosts, NAT instances, and VPC peering can help you secure your AWS infrastructure. Welcome to part four of my AWS Security overview. In part three, we looked at network security at the subnet level. This ti...
Top 13 Amazon Virtual Private Cloud (VPC) Best Practices
Amazon Virtual Private Cloud (VPC) brings a host of advantages to the table, including static private IP addresses, Elastic Network Interfaces, secure bastion host setup, DHCP options, Advanced Network Access Control, predictable internal IP ranges, VPN connectivity, movement of interna...