Docker Setup
Damit ich sie geordnet und griffbereit habe, sind hier die Setups für
Docker zusammengefasst.
- Begriffsdefinitionen
- Docker Setup
- Docker Kommandos
Begriffsdefinitionen
Bis Mai 2023 stellte Microsoft “Docker Enterprise” zur Verfügung.
Dieser Dienst wurde allerdings eingestellt: https://github.com/OneGet/MicrosoftDockerProvider
Nun steht mit dem Moby
Opensource Projekt eine freie Alternative zur Verfügung, die unter
Windows Server eingesetzt werden kann.
Windows Server 2019 und Server 2022
Die folgenden Befehle sind alle mit der Windows Server PowerShell mit
Administratorrechten auszuführen:
- “Container” Feature bereitstellen
Install-WindowsFeature -Name Containers
Installiert/Aktiviert das “Windows Containers” Feature im System
- Optional:
Uninstall-WindowsFeature Windows-Defender
Bei internen Server sollten Dateioperationen ohne den Defender schneller ablaufen
Restart-Computer -Force
Damit das neue Feature aktiv wird muss das System neu gestartet werden
- Download des Installations-Skripts:
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
Lädt das Powershell-Skript herunter, welches die Moby-Docker Binaries
installieren soll.
.\install-docker-ce.ps1
Lädt die notwendigen Binärdateien herunter und installiert sie im System.
- Docker konfigurieren
C:\ProgramData\docker\config\daemon.json
Diese Datei muss angelegt oder bearbeitet werden. Alle Einstellung liegen
dort in einer JSON Struktur
- Ein neues Docker-Daten Verzeichnis wird wie folgt konfiguriert:
1{
2 "data-root": "D:\\Services\\Docker"
3}
- Docker starten und Server Images herunterladen:
Start-Service docker
Fährt den Dienst hoch. Laut Standardeinstellung wird Docker bei jedem
Reboot automatisch gestartet.
docker image pull mcr.microsoft.com/windows/nanoserver:ltsc2022
Lädt das Nano-Server 2022 Image herunter, in dem minimalistische Dienste laufen sollten.
Die Download-Größe beträgt etwa 120 MB
docker image pull mcr.microsoft.com/windows/servercore:ltsc2022
Lädt das Server-Core 2022 Image herunter, in dem alle regulären Dienste laufen sollten.
Die Download-Größe beträgt etwa 2 GB.
docker image pull mcr.microsoft.com/windows/nanoserver:1809
Lädt das Nano-Server Image herunter, in dem minimalistische Dienste laufen sollten.
Die Download-Größe beträgt etwa 150 MB
docker image pull mcr.microsoft.com/windows/servercore:ltsc2019
Lädt das Server-Core Image herunter, in dem alle regulären Dienste laufen sollten.
Die Download-Größe beträgt etwa 2 GB.
Weitere Details zum Moby Setup findet man unter
learn.microsoft.com
Ebenso aufgelistet sind die JSON Konfigurationseinträge
Server 2016
Das aktuelle Installations-Skript für die Moby-Docker Binaries lädt
Programmdateien, die mit Windows Server 2016 nicht mehr kompatibel sind.
Allerdings funktionieren ältere Varianten mit dieser Plattform.
Sie müssen manuell heruntergeladen werden.
- Windows Container Feature installieren und System neu starten:
Install-WindowsFeature -Name Containers
Restart-Computer -Force
- Download und Installation von Moby v20.10.24:
curl https://download.docker.com/win/static/stable/x86_64/docker-20.10.24.zip -o docker-20.10.24.zip
Download von https://download.docker.com/win/static/stable/x86_64/docker-20.10.24.zip
- Inhalt der ZIP Datei sind
dockerd.exe
und docker.exe
, diese beiden
Dateien müssen nach C:\Windows\System32
kopiert werden.
mkdir C:\ProgramData\docker\config
erzeugt das Arbeitsverzeichnis des Dockerdienstes.
- Docker Dienst starten und Images herunterladen:
Start-Service docker
docker image pull mcr.microsoft.com/windows/nanoserver:sac2016
Lädt das Nano-Server Image herunter, in dem minimalistische Dienste laufen sollten.
Die Download-Größe beträgt etwa 450 MB
docker image pull mcr.microsoft.com/windows/servercore:ltsc2016
Lädt das Server-Core Image herunter, in dem alle regulären Dienste laufen sollten.
Die Download-Größe beträgt etwa 5.7 GB.
Frühere Installationsmethode
Zu Dokumentationszwecken befindet sich hier noch die Setup-Anleitung des
früheren Microsoft Docker-Provider (Docker Enterprise), der nun nicht mehr
verfügbar ist:
- Server 2016:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
ermöglicht die Installation von Updates
(ohne diese Zeile gibt es Probleme mit den Zertifikaten)
Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force
installiert die notwendige NUGET Version für die weitere Installation
Install-Module DockerMsftProvider -Force
Holt den Docker MicrosoftProvider auf das System
Install-Package Docker -ProviderName DockerMsftProvider –Force
Lädt Docker herunter und installiert die Software
- Server 2019:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Holt den Docker MicrosoftProvider auf das System
Install-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 19.03
Lädt Docker herunter und installiert die Software
- Server 2022:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Holt den Docker MicrosoftProvider auf das System
Install-Package -Name docker -ProviderName DockerMsftProvider
Lädt Docker herunter und installiert die Software
Folgende Quellen wurden verwendet:
- blog.sixeyed.com
- medium.com
- Docker starten und Server Images herunterladen:
Start-Service docker
Fährt den Dienst hoch. Laut Standardeinstellung wird Docker bei jedem
Reboot automatisch gestartet.
docker image pull mcr.microsoft.com/windows/nanoserver:sac2016
Lädt das Nano-Server Image herunter, in dem minimalistische Dienste laufen sollten.
Die Download-Größe beträgt etwa 450 MB
docker image pull mcr.microsoft.com/windows/servercore:ltsc2016
Lädt das Server-Core Image herunter, in dem alle regulären Dienste laufen sollten.
Die Download-Größe beträgt etwa 5.7 GB.
Folgende Quellen dienten als Basis:
- Docker installieren und starten (erfordert root-Rechte per
sudo
)
sudo zypper -n install docker docker-compose
Installiert Docker vom konfigurierten Repository.
sudo systemctl start docker
Starten den Docker Dienst.
sudo systemctl enable docker
Aktiviert das automatische Starten von Docker.
- Docker konfigurieren
sudo usermod -aG docker $(whoami)
Gibt dem aktuellen Benutzer die nötigen Rechte Docker direkt ansteuern
zu dürfen.
/etc/docker/daemon.json
Hier können weitere Docker Einstellungen vorgenommen werden.
z.B.: Container-Datenverzeichnis ändern:
1{
2 "data-root": "/var/my_docker_dir"
3}
sudo systemctl restart docker
Docker neu starten und Änderungen übernehmen.
- Docker Images für SUSE:
- OpenSUSE Leap:
docker pull opensuse/leap
- OpenSUSE Tumbleweed (Rolling release):
docker pull opensuse/tumbleweed
- SUSE Enterprise:
docker pull registry.suse.com/suse/sle15
Folgende Quellen dienten als Basis:
- Docker installieren und starten (erfordert root-Rechte per
sudo
)
sudo apt remove docker docker-engine docker.io runc
Alte Versionen von Docker entfernen
sudo apt update
Software- und Updatelisten vom konfigurierten Repository herunterladen
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Installation von zusätzlichen Tools für die folgenden Schritte
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Integration des Repository-Sicherheitsschlüssels von docker.com
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Hinzufügen des Docker-Software-Repositories zur lokalen Paketverwaltung
sudo apt update
Download der Softwarelist (inklusive dem neuen Docker-Repository)
sudo apt install -y docker-ce docker-ce-cli containerd.io
Installation der Docker Dienste
sudo systemctl start docker
Starten den Docker Dienst.
sudo systemctl enable docker
Aktiviert das automatische Starten von Docker.
- Docker konfigurieren
sudo usermod -aG docker $(whoami)
Gibt dem aktuellen Benutzer die nötigen Rechte Docker direkt ansteuern
zu dürfen.
/etc/docker/daemon.json
Hier können weitere Docker Einstellungen vorgenommen werden.
z.B.: Container-Datenverzeichnis ändern:
1{
2 "data-root": "/var/my_docker_dir"
3}
sudo systemctl restart docker
Docker neu starten und Änderungen übernehmen.
- Docker konfigurieren
sudo usermod -aG docker $(whoami)
Gibt dem aktuellen Benutzer die nötigen Rechte Docker direkt ansteuern
zu dürfen.
/etc/docker/daemon.json
Hier können weitere Docker Einstellungen vorgenommen werden. Falls die
Datei nicht existiert, kann sie mit Besitzer root
angelegt werden.
z.B.: Container-Datenverzeichnis ändern:
1{
2 "data-root": "/var/my_docker_dir"
3}
sudo systemctl restart docker
Docker neu starten und Änderungen übernehmen.
- Docker Images für Debian:
- Neueste Debian Distribution:
docker pull debian:latest
- Debian 11 (Bullseye):
docker pull debian:bullseye
oder: docker pull debian:11
- Minimalistisches Debian 11 (Bullseye) Setup:
docker pull debian:bullseye-slim
- Debian 10 (Buster):
docker pull debian:10
oder: docker pull debian:buster
- Minimalistisches Debian 10 (Bullseye) Setup:
docker pull debian:buster-slim
- Debian 9 (Stretch):
docker pull debian:9
oder: docker pull debian:stretch
- Debian 8 (Jessy):
docker pull debian:8
Docker Kommandos
- Nur aktuell laufende Container auflisten
docker container ls
- Container werden über eine Container ID (z.B.:
123456789abc
) oder über
einen Namen identifiziert. Hat ein Container keinen Namen, wird einer
zufällig generiert.
- Alle Container (laufend und beendet) auflisten
- Alle beendeten Container Instanzen löschen
docker container prune -a
- Alle installierten Docker Images auflisten
docker image ls -a
- Images werden über eine Image ID (z.B.:
123456789abc
) oder über
eine Kombination aus einem Namen und einem TAG identifiziert
(z.B.: my_image_name:tag
wie in debian:10
)
- Alle unbenutzten Docker Images löschen
docker image prune -a
- Images die von Containern benutzt werden können nicht gelöscht werden.
- Einen Docker Container auf der interaktiven Konsole startem
docker run -it image_name:tag
docker run -it image_id
- Ein lokales Verzeichnis im Docker-Container verfügbar machen
docker run -v d:\shared_on_host:c:\shared -it myimage:tag
docker run -v /shared_on_host:/shared -it myimage:tag
- Im Container wird das Verzeichnis
shared
angelegt und darin
wird alles bereitgestellt, was am Host-System im Verzeichnis
shared_on_host
verfügbar ist. So können zwischen Host und
Container Daten ausgetauscht werden.
Parameter: -v
+ ` ` + host-path
+ :
+ container-path
- Einen Server-Port im Container am Host verfügbar machen:
docker run -p 8080:80 -it httpd
- Startet das
httpd
Apache-Webserver-Image und leitet am Host-System
den Port 8080
in den Container auf Port 80
um. Man kann dann am
Host z.B.: per http://host-ip:8080
auf die Webseite zugreifen,
die im Container auf Port 80 läuft.
- Ein zusätzliches Programm in einem laufenden Container starten
docker container exec -it container_id cmd.exe
docker container exec -it container_name /bin/sh
- Einen Container beenden:
docker container kill container_id_or_name