Windows Server 2019 – Docker and Kubernetes

How to Install SQL Server 2019 on Windows Server

Docker is an open source project  a toolset, really  that was originally designed to assist with the running of containers on Linux operating systems. Wait a minute, what? The words Linux and open source written once again inside a Microsoft book! What is this world coming to? You see, containers are quickly becoming a big deal, and rightfully so. In Server 2016, Microsoft took some steps to start reinventing the container wheel, with the inclusion of PowerShell cmdlets that could be used to spin up and control containers running on your Windows Server, but the Docker platform has been growing at such a fast rate that Microsoft really now expects that anyone who wants to run containers on their Windows machines is going to do so via the Docker toolset. If you want to utilize or even test containers in your environment, you’ll need to get Docker for Windows in order to get started.

Docker is a container platform. This means that it provides the commands and tools needed to download, create, package, distribute, and run containers. Docker for Windows is fully supported to run on both Windows 10 and on Windows Server 2019. By installing Docker for Windows, you acquire all of the tools needed to begin using containers to enhance your application isolation and scalability.

Developers have the ability to use Docker to create an environment on their local workstation that mirrors a live server environment, so that they can develop applications within containers and be assured that they will actually run once those applications are moved to the server. Docker is the platform that provides pack, ship, and run capabilities for your developers. Once finished with development, the container package can be handed over to the system administrator, who spins up the container(s) that will be running the application, and deploys it accordingly. The developer doesn’t know or care about the container host infrastructure, and the admin doesn’t know or care about the development process or compatibility with their servers.

Linux containers

There is a major update that is in ongoing development when discussing the capabilities that Windows Server 2019 possesses to interact with different kinds of containers. Earlier, in Server 2016, a Windows container host server could only run Windows-based containers, because Windows Server Containers share the kernel with the host operating system, so there was no way that you could spin up a Linux container on a Windows host.

Times are a-changing, and we now have some creative new capabilities in Server 2019 to handle scenarios such as Linux containers. While these features are still being polished, there are some new options, called Moby VM and LCOW, that are going to enable Linux containers to run on a Windows Server container host, even running side by side with Windows containers!

This is all new enough and still being built that more details are forthcoming, but visit this link in order to check the current status on these new capabilities if you’re interested in running Linux containers: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers.

Docker Hub

When you work with containers, you are building container images that are usable on any server instance running the same host operating system  that is the essence of what containers enable you to do. When you spin up new instances of containers, you are just pulling new copies of that exact image, which is all-inclusive. This kind of standardized imaging mentality lends well to a shared community of images, a repository, so to speak, of images that people have built that might benefit others. Docker is open source, after all. Does such a sharing resource exist, one you can visit in order to grab container image files for testing, or even to upload images that you have created and share them with the world? Absolutely! It is called Docker Hub, and is available at  https://hub.docker.com.

Visit this site and create a login, and you immediately have access to thousands of container base images that the community has created and uploaded. This can be a quick way to get a lab up and running with containers, and many of these container images could even be used for production systems, running the applications that the folks here have pre-installed for you inside these container images. Or you can use Docker Hub to upload and store your own container images:

In fact, you really should go ahead and create an account for Docker Hub now, because if you want to follow along later in the chapter and test implementing a container with Docker, you’ll need a login to do it.

Docker Trusted Registry

If you’re anything like me, you think the idea of Docker Hub is a great one: a neat place to store images and even to share them among the community. However, my next inclination is to look at this through an Enterprise spyglass, which quickly turns my perspective from neat to unsecured. In other words, you may not be comfortable placing images in this public repository. Certainly not images that contain anything sensitive to your organization, anyway.

Here is where Docker Trusted Registry may be something to look into. Docker Trusted Registry is a container image repository system, similar to Docker Hub, but it’s something that you can contain within your network, behind your own firewalls and security systems. This gives you a container image-repository system without the risk of sharing sensitive information with the rest of the world.

Kubernetes

While Docker is our primary interface for building and hosting containers, allowing us to create platforms within which we can host applications in this new and exciting way, the real magic comes after we are finished with the container’s setup. Let’s peek into the future a little, and assume that you have an application now successfully hosted inside a container. This container is able to be spun up on a container host server in your own environment, or even slid over to an Azure container host very easily. This provides easy interaction with the infrastructure needed to be able to seamlessly scale this application up or down, but there is a missing piece to this scalability: orchestration.

Kubernetes is a container-orchestration solution. This means that Kubernetes orchestrates, or facilitates, how the containers run. It is the tool that enables many containers to run together, in harmony, as if they were one big application. If you intend to use containers to create scaling applications that have the ability to spin up new containers whenever additional resources are needed, you will absolutely need to have a container orchestrator, and Kubernetes is currently the best and most popular.

Microsoft recognized this popularity, and has taken steps to ensure that Kubernetes is fully supported on Windows Server 2019.

As with any software, Kubernetes is not the only name in the game. In fact, Docker has its own orchestration platform, called Docker Swarm. While it might make sense that Docker and Docker Swarm would work together better than Docker and any other orchestrator, the numbers don’t lie. A recent report shows that 82% of companies using scaling applications in the cloud are utilizing Kubernetes for their container orchestration.

As I mentioned earlier, tools such as containers, Docker, and Kubernetes are part of a cloud-first vision. While the use of containers for most companies is going to start onsite, by using their own servers and infrastructure for the hosting of containers, this is a technology that is already capable of extending to the cloud. Because the containers themselves are so standardized and fluid  making them easy to expand and move around  sliding them into a cloud environment is easily done.

Comments are closed.