« Previous 1 2 3
Use Linux Containers with WSL2 on Windows
Nested
Kubernetes with WSL
If you are working with Docker Desktop for Windows, you can also enable a Kubernetes cluster in the settings that allows you to develop Linux containers and manage them with Kubernetes (Figure 4). The Kubernetes tools are installed on activation; you can use them to manage the local Kubernetes cluster, as well as external clusters on the network.
In the settings, which you can access from the icon of the same name in Docker Desktop, click on Kubernetes and choose Enable Kubernetes ; if prompted, also Deploy Docker Stacks to Kubernetes by default . Then use Apply & Restart to create the Kubernetes cluster. If the cluster stops working, you can reset it with the Reset Kubernetes Cluster button. After creating the cluster, Kubernetes is available from the Kubernetes menu item in the context menu.
The Kubernetes cluster installation includes the kubectl
tool. You can use it to administer Kubernetes locally and over the network. A set of commands that let you manage containers in Kubernetes is available, as well. You can also take this route to manage the Kubernetes cluster and display essential information about a cluster (Table 3).
Table 3
Helpful kubectl Commands
Command | Function |
---|---|
kubectl cluster-info
|
Check whether the cluster endpoint is working and display the cluster's IP address. |
kubectl get services
|
List services in the namespace. |
kubectl get pods
|
List pods in the current namespace. |
kubetcl get pods --all-namespaces
|
List all pods in all namespaces. |
kubectl get pods -o wide
|
List extended information about the pods in the general namespace. |
kubectl get deployment <deployment>
|
Show information about a specific deployment. |
kubectl get nodes
|
List nodes in the cluster. |
kubectl describe
|
Show further information for various objects on your screen. For example, kubectl describe nodes displays more detailed data about the nodes.
|
If you have a large number of pods in use in the cluster and only want to see the pods that currently have a Running status, use the command:
kubectl get pods --field-selector=status.phase=Running
If you want to list all pods in all namespaces with a status of Running
, extend the command to include the --all-namespaces
option.
Cluster with Docker Swarm
As an alternative to (or in parallel with) Kubernetes, you can use Docker Swarm to combine Windows-based container hosts and create a cluster. In such a configuration, it is possible to move containers between container hosts running Windows Server 2019 and Windows 10. To create one, use the docker
tool in Windows.
To govern communication on the network, you will need some firewall rules, which you need to create in the Windows firewall. Communication between container hosts on UDP and TCP ports 2377, 7946, and 4789 must be allowed. The commands in Listing 1 create a Docker Swarm in Windows and show possible results.
Listing 1
Creating a Docker Swarm
docker swarm join --token <join token> <IP address of host> docker swarm init --advertise-addr=<IP address of host> --listen-addr <IP address of host>:2377 docker swarm join --token SWMTKN-1-35yiqpp8hm5bypthomo0u6ip7h5mlxprneuvzeqy5c6mm5rke5-8dsgejlbdnte9iiqd4kiehkx8 192.168.178.244:2377 docker swarm init --advertise-addr=192.168.178.244 --listen-addr 192.168.178.244:2377
Conclusions
Linux containers can be deployed on Windows networks with Windows Server 2019 and Windows 10. Of course, to use containers in a production scenario, the performance has to be good. With this in mind, it makes sense to use version 2 of the Windows Subsystem for Linux, which is available for Windows 10 and for Windows Server 2004 and later.
Developers and administrators can deploy a full Linux container environment, including a Kubernetes cluster, on Windows 10 Pro and Windows 10 Enterprise. The Kubernetes tools are fully available in Windows 10 and enable the management of additional clusters on the network.
Containers in this environment can, of course, be moved to other container hosts. WSL is ideal for developing applications that run in Linux containers because no additional VMs need to be created. The containers rely on WSL to run directly in the Linux distribution on Windows and can be managed with the distribution's own tools. See the "Developing with Docker and WSL" box for other options.
Developing with Docker and WSL
Visual Studio Code and Visual Studio (VS) are possible solutions for developing applications for Docker that can then be run with WSL. Microsoft also offers the Remote-WSL
[3] extension that you can use to design applications for containers that – in turn – can be deployed with WSL on Windows. The extension is usable from VS Code. Additionally, Microsoft offers the Remote-Containers
[4] extension, which can also be used in combination with WSL.
Infos
- Direct download: WSL2 Linux kernel update package for x64 machines : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
- Docker Desktop for Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows
- Remote-WSL: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
- Remote-Containers: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
« Previous 1 2 3
Buy this article as PDF
(incl. VAT)
Buy ADMIN Magazine
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Most Popular
Support Our Work
ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.