Docker
Alle Welt redet von Lösungen als "Docker Container" und Windows Server kann per Hyper-V nicht nur VMs hosten sondern auch Docker-Container. Diese Seite enthält Links und meine Erfahrungen mit Docker
Docker, was ist das noch mal ?
Um eine Software oder einen Service zu betreiben gibt es verschiedene Optionen. Man kann:
- Native auf Hardware
Das gilt z.B. für Programme auf Arduino, ESP8266 und andere Geräte, bei denen es gar kein eigenes "Betriebssystem" gibt sondern direkt der Code nach der Kompilierung ausgeführt wird. - Native auf Basis das darunterliegenden Betriebssystems
In der Windows-Welt sind das quasi alle Programme, die sie auf Windows installieren und dann ausführen. Eine Virtualisierung gibt es hier auch nicht wirklich, wenn man mal AppV etc. außen vor lässt. Die verschiedenen Programme können sich abver gegenseitig stören - Virtuelle Hardware mit VMWare, Hyper-V, Xen-Server
Diese Technik ist schon lange bekannt. Sie betreiben auf einem Host in virtuellen Maschinen weitere komplette Betriebssysteme zzgl. der Anwendungen. Der Vorteil ist, dass die Systeme gut gegeneinander abgeschottet sind und weniger physikalische Hardware eingesetzt wird. Auf der anderen Seite müssen Sie viel mehr Server verwalten, Updaten, Pflegen und die Virtualisierung kostet auch etwas Overhead und sorgt für Abhängigkeiten. Um eine Lösung zu starten, muss erst der komplette Gast gestartet werden. Ein Image ist meist mehrere Gigabyte groß und ein Verlagern zwischen Hyper-V, VMWare und Xen ist auch nicht immer möglich. - Docker virtualisiert Schnittstellen
Das Programm selbst ist in einem Container eingeschlossen aber nutzt direkt die Schnittstellen des Betriebssystems (Also Linux). Aber im Container drin ist kein eigener Kernel o.ä. Die Software glaubt sie habe den Host ganz für sich alleine. Die Docker-Software sorgt dafür dass mehrere Container nebeneinander laufen aber doch nichts von einander sehen. Sie sind schon gegeneinander abgeschottet und können maximal über TCP/IP miteinander kommunizieren. Sie sind deutlich kleiner als richtige VMs, portabel zwischen den unterschiedlichen Plattformen, auf denen Docker läuft und starten sehr schnell.
Se gibt also eine allgemeine Schnittstellenvorgabe von Docker, die erst mal auf Linux aufbaut und so ist klar dass die meisten Docker Container natürlich Linux-Programmer enthalten. Die Lösung hat Charme da der Overhead der Virtualisierung aufgrund des fehlenden Hostbetriebssystems deutlich kleiner ist. Wenn eine aus Containern basierende Lösung auch genau Daten und Konfiguration vom ausführbaren Programm trennt, werden Updates einfach durch den Tausch des kompletten Containers möglich. Auch ist es dann einfach immer mehr Container zu starten, wenn getrennte Instanzen, geografische Verteilung und Skalierung erforderlich werden. Mit Kubernetes und Swarm bereichern zwei anderen Projekte die Docker-Plattform um eine Management und eine Verteilung erweitert haben.
Docker kann man sogar auf einer Workstation nutzen aber das ist aktuell wohl eher eine Nische. Zumindest solange z.B. die bekannten Windows Programme noch nicht als Container zur Verfügung stehen. Ebenso wenig sollten Sie in nächster Zukunft erwarten, dass z.B. Programme wie Exchange Server o.ä., als Docker Container erscheinen werden. Ich fände es aber schon interessant, wenn man z.B. PowerShell-Lösungen z.B. als Container bereitstellen kann. PowerShell. Core ist ja schon auf Linux lauffähig und PowerShell 6 ist mittlerweile OpenSource.
- What is docker - Overview
https://www.docker.com/what-docker - What is a container
https://www.docker.com/what-container - Get Started, Part 1: Orientation and setup
https://docs.docker.com/get-started/ - Docker (Software)
https://de.wikipedia.org/wiki/Docker_(Software) - Adding Kubernetes support in the Docker platform
https://www.docker.com/kubernetes - Kubernetes
https://de.wikipedia.org/wiki/Kubernetes
Docker auf Windows
Unter Linux ist Docker recht einfach durch die verschiedenen Package Manager installiert. Aber auch ein Windows Betriebssystem kann Docker ausführen und darauf die entsprechenden Container starten. Technisch stellt Docker hier auf Basis von Hyper-V eine VM mit dem Kernel bereit, in der dann die Docker-Container laufen. Voraussetzung ist aber ein Hyper-V-Unterbau, in dem dann Docker quasi ein rudimentäres Linux al sVM aktiviert, welches dann die Basis für die weiteren Container darstellt.
- Docker for Windows
https://www.docker.com/docker-windows - Windows-Container unter Windows1
https://docs.microsoft.com/de-de/virtualization/windowscontainers/quick-start/quick-start-windows-10 - Install Docker Enterprise Edition for Windows Server
https://docs.docker.com/install/windows/docker-ee/ - How to set up Kubernetes on Windows 10 with Docker for Windows and run
ASP.NET Core
https://www.hanselman.com/blog/HowToSetUpKubernetesOnWindows10WithDockerForWindowsAndRunASPNETCore.aspx - Get started with Docker for Windows
https://docs.docker.com/docker-for-windows/ - Microsoft entwickelt PowerShell Commandlets, die direkt mit der Docker-API
sprechen, um Docker Container zu verwalten.
Man braucht dann das Docker-Kommandozeilentool nicht mehr
https://GitHub.com/Microsoft/Docker-PowerShell - kleine Anleitung, wie man die Docker-Machine (also den Docker Server) mit
Hyper-V zum laufen bekommt:
https://chipsncookies.com/2015/run-docker-on-hyper-v-with-docker-machine/ - Running PowerShell Core using Docker
http://discoposse.com/2017/01/19/running-powershell-core-using-docker/ - PowerShell For Docker
https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/docker-powershell
https://GitHub.com/Microsoft/Docker-PowerShell/ - Working with Windows Containers and Docker: Up and Running
https://www.red-gate.com/simple-talk/sysadmin/virtualization/working-windows-containers-docker-running/ - Use Docker to automate testing of PowerShell Core scripts
https://blogs.technet.microsoft.com/heyscriptingguy/2017/10/03/use-docker-to-automate-testing-of-powershell-core-scripts/
Docker und Synology
Docker als Basis ist nicht auf "PCs" und "Server" beschränkt. Mittlerweile können Sie entsprechende Container auch auf NAS-Geräten laufen lasen. Ab dem Moment wird die Plattform auch für den Heimbereich interessant, insbesondere wenn es sich um NAS-Geräte handelt, bei denen der Hersteller die Docker-Unterstützung mit bringt. Der Container ist dann schnell und einfach installiert ohne dass Sie am eigentlichen NAS-Betriebssystem etwas verändern müssen.
- Zusatzpakete - Docker
https://www.synology.com/de-de/dsm/packages/Docker
Mit Liste der Disk Stations, die Docker "verkraften". - UniFi Controller im Docker Container auf Synology DiskStation installieren
https://idomix.de/unifi-controller-im-docker-container-auf-synology-diskstation-installieren - QNAP Container Station
https://www.qnap.com/solution/container_station/de-de/
Interessante Docker Container
Einfach nur mal Docker installieren, bringt noch keinen Vorteil. Interessant wird Docker durch die Nutzung der verschiedenen bereitgestellten Docker-Container, in denen quasi "fertige Software" schon betriebsbereit enthalten ist,. Durch den Betrieb im Container entfällt die Installation auf einem Host mit vielen Abhängigkeiten, Ich finde folgende Container interessant:
- Docker LibreNMS
https://www.naschenweng.info/2017/02/18/monitoring-ubiquiti-home-network-docker-librenms-snmp/
Ein kleines Netzwerk Management Systeme - Unifiy Controller für meine WLAn
AccessPoints
Unifi container https://hub.docker.com/r/linuxserver/unifi/
https://hub.docker.com/r/jacobalberty/unifi/
Schade, dass nicht Ubiquiti selbst einen Container bereit stellt. Bislang hatte ich dann eben immer die Java-Version auf meinem Hyper-V-Host mit installiert. - Eclipse Mosquitto MQTT-Broker
https://hub.docker.com/_/eclipse-mosquitto/
Als Docker Container habe ich deutlich weniger schmerzen damit ihn auf der Synology mitlaufen zu lassen. - A tiny MQTT-Broker docker image
https://thecattlecrew.net/2017/02/24/a-tiny-mqtt-broker-docker-image/ - Portainer
docker run portainer/portainer -d- p 9000:9000
eine grafische Verwaltung von Docker auf dem localHost
https://portainer.readthedocs.io/en/latest/
Es kommen sicher noch einige Container dazu, denn man muss ja nicht erst den Host installieren und dann den Gast und da drin dann die Applikation.
Weitere Links
- Virtualisierung
- Kommentar: Docker – das Ende der Virtualisierung
https://www.heise.de/developer/meldung/Kommentar-Docker-das-Ende-der-Virtualisierung-3949022.html - Docker, Inc is Dead
https://chrisshort.net/docker-inc-is-dead/ - Docker-Materialien von Rainer Stropek f
https://GitHub.com/rstropek/DockerVS2015Intro - What is Docker? Linux containers explained
https://www.infoworld.com/article/3204171/linux/what-is-docker-linux-containers-explained.html