Skip to content

Commit 1d6dffa

Browse files
authored
Different Docker installation setups on Windows (#101)
1 parent 676b9d1 commit 1d6dffa

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

content/en/docs/installation/installation-windows.md

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,23 @@ With WSL you are working with a real Linux distribution (e.g. Ubuntu). Therefore
1414

1515
If you ever get stuck during this installation, be sure to reboot WSL once. It may help to correctly load some configurations and/or daemons.
1616

17-
## Docker Desktop for Windows
17+
## Installation of Docker
1818

19-
Docker provides a great installation help on their website: [https://docs.docker.com/desktop/install/windows-install/](https://docs.docker.com/desktop/install/windows-install/)
19+
There are two different ways to install and use Docker:
2020

21-
You can just use the Docker Desktop for Windows bundle. Make sure the WSL 2 feature is enabled.
21+
- Docker Desktop for Windows (with WSL 2 backend)
22+
- Native Docker installation inside of WSL 2
23+
24+
[Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/) provides an easy way to install Docker on your system.
25+
Using it for GMT comes with the following issues:
26+
27+
- possible license issues (commercial use of Docker Desktop in larger enterprises required a paid subscription)
28+
- resource overhead (due to extra VM `docker-desktop`)
29+
- the metric provider [Network IO - cgroup - container]({{< relref "/docs/measuring/metric-providers/network-io-cgroup-container" >}}) does not work due to the virtualization barrier between the container processes (running inside the special environment `docker-desktop`) and the default WSL environment (e.g. `ubuntu`)
30+
- PID resolution fails: `cgroup.procs` files contain placeholder values (typically "0") instead of actual container PIDs
31+
- Namespace access blocked: `/proc/PID/ns/net` files don't exist in WSL2's filesystem
32+
33+
If one of the mentioned issues is a problem for you, consider installing Docker natively inside of your prefered WSL 2 distribution (e.g. [Ubuntu](https://docs.docker.com/engine/install/ubuntu/)).
2234

2335
## Setup
2436

@@ -29,7 +41,7 @@ Before following the setup instructions given in [Installation on Linux →]({{<
2941
Required changes:
3042

3143
- Disable automatic generation of hosts file
32-
- Enable systemd (install script currently enforces the usage of systemd)
44+
- Enable systemd (if that's not already the case)
3345

3446
```bash
3547
sudo vim /etc/wsl.conf
@@ -52,6 +64,7 @@ wsl.exe --shutdown
5264
```
5365

5466
References:
67+
5568
- [https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/](https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/)
5669
- [https://learn.microsoft.com/en-us/windows/wsl/systemd](https://learn.microsoft.com/en-us/windows/wsl/systemd)
5770

@@ -66,7 +79,7 @@ To be able to access the frontend and the API of the GMT, you have to add the UR
6679

6780
### Enable CGroups v2
6881

69-
This is an optional step, but necessary to be able to get container specific metrics like CPU utilization and memory usage (see section [Metric providers](#metric-providers) below for more information).
82+
This is an optional step, but necessary to be able to get container specific metrics like CPU utilization, memory usage, network transfer and disk I/O (see section [Metric providers](#metric-providers) below for more information).
7083

7184
Create the file `%USERPROFILE%\.wslconfig` (or edit it) and add the following content:
7285

@@ -97,6 +110,13 @@ However, for testing your usage scenarios you can use at least the following met
97110
- Container memory usage via cgroupv2
98111
- Config: `memory.used.cgroup.container.provider.MemoryUsedCgroupContainerProvider`
99112
- Documentation: [Measuring/Metric Providers/Memory Used - cgroup - container]({{< relref "/docs/measuring/metric-providers/memory-used-cgroup-container" >}})
113+
- Container network I/O via cgroupv2
114+
- **only available with native Docker installation, not Docker Desktop for Windows**
115+
- Config: `network.io.cgroup.container.provider.NetworkIoCgroupContainerProvider`
116+
- Documentation: [Measuring/Metric Providers/Network IO - cgroup - container]({{< relref "/docs/measuring/metric-providers/network-io-cgroup-container" >}})
117+
- Container disk I/O via cgroupv2
118+
- Config: `disk.io.cgroup.container.provider.DiskIoCgroupContainerProvider`
119+
- Documentation: tbd.
100120
- Machine energy consumption via XGBoost (ML-based estimation)
101121
- Config: `psu.energy.ac.xgboost.machine.provider.PsuEnergyAcXgboostMachineProvider`
102122
- Documentation: [Measuring/Metric Providers/PSU Energy - AC - XGBoost - Machine]({{< relref "/docs/measuring/metric-providers/psu-energy-xgboost-machine" >}})

0 commit comments

Comments
 (0)