A guide to Containers AKA What do Containers Contain?
What are Containers?
Containers can be viewed as the next step in virtualisation. They’re smaller, faster and easier to work with than traditional Virtual Machines (VMs).
A Virtual Machine is, as the name suggests, a complete machine – so each one has its own Operating System and everything else a server would contain. Virtual machines will often run multiple services and applications.
Containers, on the other hand, contain just what is needed to perform the task – and that is typically running a single service or application. Most of the “central infrastructure” – including the Operating System – is shared between the containers, enabling each one to be small and lightweight.
What is Docker?
Docker is the foremost container technology, reaching almost “Hoover” levels of ubiquity in some quarters. While other tools to create containers exist, Docker is the leading technology, with widespread use as well as partnerships with companies such as Microsoft.
Why use containers?
Some of the main benefits offered by containers include:
Better resource utilisation – Because they’re much smaller than VMs, typically tens of Megabytes rather than tens of Gigabytes, more containers can be deployed on the same infrastructure.
Increased speed – Because they’re much smaller, they can boot up much faster.
Increased agility – Their small size makes them extremely portable and standardised images makes them easily re-usable within other deployments and services. Due to this, containers can help increase speed and efficiency within development scenarios.
When would I use containers?
Microservices
Many more organisations are moving towards developing applications using microservices – a combination of loosely coupled, interacting but somewhat separate, services. This has two main benefits:
- Better application resilience – If one of the services goes down, the rest of application should continue to function (albeit at a reduced level perhaps).
- More agile development – With distinct services being kept separate, development teams can develop and deploy their services independently of each other. This enables faster improvements and fixes, and also makes it easier to fail quickly – all key to the DevOps methodology.
Containers – being lightweight, transportable and quick to boot – can offer many benefits within this type of scenario.
Reducing Public Cloud costs
As containers are smaller, you can put more of them on one server which can lead to savings – particularly in the public cloud. If you can consolidate multiple workloads into a single VM – this will almost certainly reduce your Cloud infrastructure spend.
Licensing in Containers
This all sounds great – but what does it do mean for SAM? As a general rule, containers are viewed the same as virtual machines but let’s take a look.
Windows Server 2016
Microsoft see there as being 2 types of containers:
- Windows Server containers
- Hyper-V containers
And these are licensed differently.
An unlimited number of Windows Server containers can be run on a Windows Server 2016 system, whether licensed with Standard or Datacenter edition.
Hyper-V containers provide higher levels of isolation and follow the familiar Virtual Machine licensing rules – 2 containers are available when all physical cores are licensed with Windows Server 2016 Standard while Datacenter allows unlimited containers. 3rd party container technologies are equivalent to Hyper-V containers, meaning containers created via tools such as Docker follow these same licensing rules.
Windows Server Nano Server
This new deployment option for Windows Server is designed for container scenarios – the OS has a significantly smaller footprint and is designed for such uses with “fewer patches, faster restarts and tighter security”.
Be aware of the licensing requirements! Windows Server 2016 Nano Server receives updates using the “Semi-Annual Channel”, meaning that Software Assurance (SA) is required on both the server licenses AND CALs.
Oracle
Containers are, not surprisingly, considered “soft virtualisation” by Oracle. Should Oracle be deployed within a container, you will need to license all the physical infrastructure that sites underneath the container – including all servers within the cluster, farm etc. unless other, Oracle approved, “hard partitioning” measures are also in place.
Further Reading
Docker – https://www.docker.com/what-docker
Nano Server – https://docs.microsoft.com/en-us/windows-server/get-started/nano-in-semi-annual-channel
Related articles:
- Tags: Containers · Virtualisation
About Rich Gibbons
A Northerner renowned for his shirts, Rich is a big Hip-Hop head, and loves travel, football in general (specifically MUFC), baseball, Marvel, and reading as many books as possible. Finding ways to combine all of these with ITAM & software licensing is always fun!
Connect with Rich on Twitter or LinkedIn.
I am not sure what this exactly means: “3rd party container technologies are equivalent to Hyper-V containers, meaning containers created via tools such as Docker follow these same licensing rules.”
If I have physical server with Hyper-V running one VM (it has its name, is in AD domain etc.) It requires certain license. Clear. If I install Docker to this already licenced VM and use docker container, how do I identify this container as another machine with requirement for Windows license?
Rich, probably worth updating for SQL Server as well. The License Guide for SQL Server 2017 is refreshingly clear on the topic for once, and for SAM pros experienced in managing SQL VMs the good news is that you treat a SQL Server container in exactly the same way you would a VM so you don’t have anything new to learn. Importantly this is different to the licensing logic for containerised Windows Server but it makes sense – after all, Windows Server is an OS, SQL Server an Application.