Erste Schritte mit Container und Docker im Windows Umfeld Teil1: Container Host

Auch in einem reinem Windows Umfeld kommt es immer wieder mal vor das man Systeme oder auch Anwendungen findet die relativ cool klingen aber auf Containern basieren. Also muss der erste Docker Host her, obwohl sich auch sowohl unter Windows Client als auch unter Windows Server Docker Container hosten lassen kann stößt man relativ schnell an die Grenzen wenn man die Systeme produktiv nutzen will. Das Problem an das wir gestoßen sind, war das die Container nur laufen wenn ein Benutzer angemeldet ist.

Nach etwas Oldschool Recherge (ohne KI) und dem lesen vieler Artikel und Beiträge verschiedenster Foren und Reddit Threads bin ich dann zu dem Schluss gekommen in unsere reine Windows Umgebung das erste Linux System zu integrieren. Es soll ein Ubuntu Server sein und damit die Kollegen da auch mal "draufschauen" können wurde das ganze als VM auf einem Hyper-V Host mit grafischer Oberfläche installiert. Hier hat mir zum Glück die offizielle Anleitung sehr gute Dienste getan:

Install Ubuntu Server | Ubuntu

Mindestanforderungen:

- 5GB Speicher (empfohlen werden mindestens 25GB)

- 1GB Arbeitsspeicher (empfohlen werden mindestens 3GB)

Für die Netzwerkkonfiguration ist es nicht wie unter Windows mit der PowerShell bei ein paar einfachen Befehlen getan, sondern wir müssen eine "netplan configuration" Datei erstellen. Für die Erstellung brauchen wir den Adapter Identifier welchen wir mit dem Befehl:

ip -a

herausfinden können. Anschließend können wir mit dem Editor "nano" in der Shell die Datei erstellen bzw bearbeiten. Sollte Nano nicht installiert sein, könnt Ihr dies mit 

sudo apt-get install nano

nachholen. Anschließend könnt ihr mit: 

sudo nano /etc/netplan/99_config.yaml

den Editor anweisen die Datei zu öffnen, wenn die Datei noch nicht vorhanden ist, erstellt er diese direkt beim speichern. Die Datei schaut dann in meinem Fall wie folgt aus:

network:
    version: 2
    ethernets:
        eth0:
            addresses:
            - 192.168.255.14/24
            nameservers:
                addresses:
                - 192.168.255.11
                - 192.168.255.5
                search:
                - dom-ppa01.ppedv.de
            routes:
            -   to: default
                via: 192.168.255.2

Speichern könnt Ihr diese Datei mit der Tastenkombination Strg+O , abbrechen wenn Ihr eure Änderungen wieder verwerfen wollt könnt Ihr mit Strg+X.

Nachdem man die Datei gespeichert habt, muss man die Konfiguration noch explizit anwenden mit dem Befehl:

sudo netplan apply

Da war Sie nun, die erste Linux Instanz im Microsoft Windows Systems einen Microsoft Learning Partners. Schnell wechselte ich allerdings von der GUI weg und verwendete das Terminal / die PowerShell auf meinem Windows Client um mich mit der Linux Instanz zu verbinden, da dies tatsächlich performanter war und die meisten Anleitungen eh auf die Bash zielen.

Dafür nutzt man einfach folgende Syntax:

ssh username@hostname

Vor der Installation von Anwendungen sollte man auf Linux Systemen immer vorher alles aktualisieren, das kann man mit folgenden zwei Befehlen machen:

sudo apt-get update
sudo apt-get upgrade

Mit sudo führt man den folgenden Befehl mit erweiterten Rechten aus, es lässt sich vergleichen als würde man unter Windows eine cmd oder PowerShell als Administrator (Elevated) ausführen. Mit dem ersten Befehl aktualisiert man die Liste der Pakte sowie deren Versionen, mit dem zweiten Befehl führt man dann das eigentliche Update der Pakete aus. In regelmäßigen Zeitabständen sollte man dann auch noch den folgenden Befehel ausführen zum bereinigen nicht mehr verwendeter Pakete

sudp apt-get autoremove

Wenn alles aktualisiert ist kann man den folgenden Befehlen aus der offiziellen Docker Installationsdokumentation folgen um Docker zu installieren. Ubuntu | Docker Docs

# Add Docker's official GPG key:
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Installation des eigentlichen Docker Pakets und dessen Erweiterungen
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Mit dem vorhergehenden Befehlen wurde jetzt nicht nur die eigentliche Docker Engine installiert sondern auch Erweiterungen wie zum Beispiel Docker Compose was eine vereinfachte Bereitstellung ala "Code As a Infrastructure " durch ein YAML File vereinfacht. Gerade wenn die Anwendungen die man bereitstellen will aus mehreren Containern besteht. Zum Beispiel einem Web und einer Datenbank Komponente.

Somit steht zumindest schon einmal der Containerhost, in weiteren Blogartikel werden wir uns mit Docker Compose, AD Integration, Portainer, PaperlessNGX und Grafana auseinandersetzen. 

 Wer sich unabhängig vom Hosting OS mit Docker auseinandersetzen bzw einarbeiten will kann sich auch gerne mal unseren Kurs zu diesem Thema anschauen:

Docker und Kubernetes - Grundlagen Container-Virtualisierung

Nächster Artikel der Reihe: Container und Docker im Windows Umfeld Teil2: Container Verwaltung

 

Kommentare sind geschlossen