Docker ist ein beliebtes Open-Source-Tool, das eine portable und konsistente Laufzeitumgebung für Softwareanwendungen bietet. Docker verwendet Container als isolierte Umgebungen im Benutzerraum, die auf Betriebssystemebene ausgeführt werden und das Dateisystem sowie die Systemressourcen gemeinsam nutzen. Ein Vorteil ist, dass durch die Containerisierung so deutlich weniger Ressourcen verbraucht werden, als bei einem herkömmlichen Server oder einer virtuellen Maschine. Alles Wichtige für den Einsatz in der Praxis und die wichtigsten Fragen zu Docker finden Sie hier einfach erklärt.
Ein detailliertes Video zum Thema „OPC Router im Docker Container einsetzen“ finden Sie hier in unserem Tutorial-Stream.
1. Was ist Docker?
Docker bzw. die Docker-Technologie ist eine Open-Source-Technologie. Im Kern wird sie für die Entwicklung, den Vertrieb und die Ausführung von Anwendungen verwendet.
Mit Docker können Sie Anwendungen von einer lokalen Infrastruktur isolieren. So ist die Softwarebereitstellung schneller, einfacher und sicherer als je zuvor.
1.1. Welches sind die Kerneigenschaften?
Die Kerneigenschaft von Docker besteht darin, dass Anwendungen gekapselt in sogenannten Docker-Containern verpackt sind. Sie sind so für jedes System einzusetzen, auf dem ein Linux-, Macintosh- oder Windows-Betriebssystem ausgeführt wird. Seit längerer Zeit gibt es auch andere Containersysteme. Docker wurde jedoch populär, weil es eine leichter zugängliche und umfassendere Schnittstelle für diese Technologie bietet. Zudem wurde eine öffentliche Softwarequelle mit Basis-Container-Images geschaffen. Benutzer können auf ihr aufbauen, wenn sie containerisierte Umgebungen zur Ausführung ihrer Anwendungen erstellen.
1.2. Was ist der Hauptvorteil von Docker?
Mit Docker können Sie sicherstellen, dass die Funktionalität Ihrer Anwendungen in jeder Umgebung ausgeführt werden kann. Dieser Vorteil entsteht, weil alle Anwendungen und deren Abhängigkeiten in einem Docker-Ausführungscontainer zusammengeführt werden.
Das bedeutet auch, dass z.B. DevOps-Profis (Development und IT-Operations) verschiedenste Anwendungen mit Docker generieren. Dadurch stellen sie sicher, dass sie sich nicht gegenseitig stören. Es können Container erstellt werden, auf dem verschiedene Anwendungen installiert sind. Der Container kann dann der Qualitätssicherung übergeben werden. Diese muss anschließend nur den Container ausführen, um sämtliche Abläufe und Funktionen systemunabhängig zu testen. Daher spart die Verwendung von Docker-Tools Zeit. Im Gegensatz zur Verwendung von Virtuellen Maschinen (VMs) müssen Sie sich keine Gedanken darüber machen, welche Plattform Sie verwenden:
Docker-Container funktionieren überall.
Welche Frage haben Sie zu Docker?
2. Was genau ist ein Docker-Container?
Ein Docker-Container ist eine Standardsoftwareeinheit, die einen Code in all seinen Abhängigkeiten speichert. So wird die Anwendung schnell und zuverlässig auf verschiedensten Computerumgebungen lauffähig. Ein Docker-Container bildet ein leichtes eigenständiges ausführbares Softwarepaket ab, das alles enthält, was zum Ausführen einer Anwendungscodelaufzeit benötigt wird:
- Programmcode
- RunTime-Engines
- Systemtools
- Systembibliotheken
- Einstellungen
Diese Containerisierte Software läuft auf Linux-, Mac- und Windows-basierten Systemen unabhängig von der Infrastruktur immer gleich. Die Docker-Container isolieren die Software von der Umgebung und stellen sicher, dass sie trotz Unterschieden einheitlich funktioniert.
2.1. Was sind die Vorteile von Containern?
Docker-Container sind besonders beliebt, weil sie gegenüber Virtuellen Maschinen (VMs) viele Vorteile bieten. VMs enthalten grundsätzlich vollständige Kopien eines mächtigen Betriebssystems, die Anwendung selbst, alle erforderlichen Binärdateien und Bibliotheken. Dies beansprucht in der Regel Dutzende von Gigabytes an Speicherkapazität. VMs können im Gegensatz zu Docker-Containern auch nur langsam booten. Docker-Container hingegen benötigen weniger Speicherplatz, da ihre Images normalerweise nur Dutzende von Megabytes groß sind. So können bei einem Einsatz von Docker mehr Anwendungen verarbeitet werden, was die Verwendung von VMs und Betriebssystemen reduziert. Auch ein Einsatz der Container auf Edge-Devices, z.B. auf kompakten Einplatinencomputern wie dem Raspberry Pi oder robusten und wartungsarmen Embedded PCs in der Industrie, ist problemlos möglich.
Docker-Container sind also flexibler und effektiver und die Verwendung von Docker in der Cloud ist sehr beliebt. Die Möglichkeit, dass verschiedene Anwendungen auf einer einzelnen Betriebssystem-Instanz ausgeführt werden können, verbessert vielfältige Einsatzmöglichkeiten immens. Ein entscheidender Vorteil von Docker-Containern ist die Fähigkeit, Apps nicht nur voneinander, sondern auch von ihrem zugrunde liegenden System zu isolieren. So kann der Anwender leicht bestimmen, wie eine zugewiesene containerisierte Einheit das jeweilige System und die vorhandenen Ressourcen (CPU, GPU und Netzwerk) nutzt. Zudem stellt es auch sicher, dass Daten und Code voneinander getrennt bleiben.
3. Welche Komponenten gibt es?
Die Docker-Plattform besteht aus einer Reihe von Komponenten. Docker Desktop und Docker-Engine sind zwei wichtige Bestandteile davon. Docker-Images definieren den Inhalt von Containern. Docker-Container sind lauffähige Instanzen von Images. Der Docker-Daemon ist eine Hintergrundanwendung, die Docker-Images und -Container verwaltet und ausführt. Der Docker-Client ist ein Befehlszeilenprogramm (CLI), das die API des Docker-Daemons aufruft. Docker-Registries enthalten Images, und der Docker Hub ist ein weit verbreitetes öffentliches Registry. Zudem gibt es noch die Docker-Toolbox, um Docker auf Systeme zu bringen, die nicht nativ unterstützt werden. Das wird erreicht, indem eine virtualisierte Linux-Instanz gestartet wird (z. B. innerhalb von VirtualBox) und Docker dann innerhalb dieser virtuellen Maschine ausgeführt wird. Ein Großteil von Docker (jedoch nicht Desktop) ist Open Source unter der Apache-V2-Lizenz.
3.1 Docker-Desktop
Während die meisten Docker-Komponenten für Windows, Mac und Linux verfügbar sind, und trotz der Tatsache, dass die meisten Docker-Container auf Linux laufen, ist Desktop nur für Windows und Mac verfügbar. Docker Desktop ist ein GUI-Tool (Grafische Benutzeroberfläche), welches im Wesentlichen eine virtuelle Maschineninstallation abdeckt. Diese virtuelle Maschine ist unter Linux nicht notwendig, da hier direkt die Docker-Engine lauffähig ist. Docker Desktop dient unter Windows und Mac zum Management verschiedener Docker-Komponenten und -Funktionen, einschließlich Containern, Images, Volumes (an Container angehängter Speicher), lokalem Kubernetes (eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen), Entwicklungsumgebungen innerhalb von Containern und mehr.
3.2 Docker-Images / Docker-Registry
Ein Docker-Image ist eine unveränderliche Datei, die im Wesentlichen einen Schnappschuss eines Containers darstellt. Images werden mit dem Befehl „build“ erstellt und erzeugen einen Container, wenn sie mit „run“ gestartet werden. Images werden in einer Docker-Registry wie „registry.hub.docker.com“ gespeichert. Sie sind so konzipiert, dass sie aus mehreren Schichten anderer Images bestehen können. So muss bei der Übermittlung von Images über das Netzwerk nur eine geringe Datenmenge übertragen werden.
3.3 Docker-Container
Spricht man in der Sprache der Programmierer, ist ein Image eine Klasse und ein Container eine Instanz einer Klasse – ein Laufzeitobjekt. Container sind der Grund, warum Docker so vielfältig verwendet wird: Sie sind leichtgewichtige und portable Kapselungen einer Umgebung, in der Anwendungen ausgeführt werden können (s. auch „Was genau ist ein Docker-Container?„).
Alles dazu, wie Sie den „OPC Router im Docker-Container einsetzen“ – praxisnah in unserem Tutorial.
3.4 Docker-Engine
Lassen Sie uns zunächst einen Blick auf die Docker-Engine und ihre Komponenten werfen, damit wir eine grundlegende Vorstellung davon haben, wie das System funktioniert. Mit der Docker Engine entwickeln Sie Anwendungen, stellen sie zusammen, liefern und führen Sie aus, indem Sie die folgenden Komponenten verwenden:
3.4.1 Docker Daemon
Der Docker Deamon ist ein dauerhafter Hintergrundprozess, der Docker-Images, Container, Netzwerke und Speichervolumen verwaltet. Er „schaut“ ständig auf Docker-API-Anforderungen und verarbeitet sie.
3.4.2 Docker Engine REST API
Die Docker Engine REST API ist eine Schnittstelle, die von Anwendungen verwendet wird, um mit dem Docker-Daemon zu interagieren. Auf sie kann über einen HTTP-Client zugegriffen werden.
3.4.3 Docker Client / Docker CLI
Der Docker-Client ermöglicht den Benutzern die Interaktion mit Docker. Er kann sich auf demselben Host wie der Daemon befinden oder eine Verbindung zu einem Daemon auf einem entfernten Host herstellen und mit mehr als einem Daemon kommunizieren. Der Docker-Client bietet eine Befehlszeilenschnittstelle (CLI = Command Line Interpreter), über die Sie einem Docker-Daemon Befehle zum Erstellen, Ausführen und Anhalten von Anwendungen erteilen können.
Der Hauptzweck des Docker-Clients besteht darin, ein Mittel zur Verfügung zu stellen, mit dem Images aus einer Registry gezogen und auf einem Docker-Host ausgeführt werden können. Übliche Befehle, die von einem Client ausgegeben werden, sind:
- docker build
- docker pull
- docker run
3.4.4 Portainer
Um die Arbeit mit Docker-Befehlen zu vereinfachen, ist das freie, intuitive und leicht zu implementierende GUI (Graphical User Interface = Grafische Benutzeroberfläche) Portainer oft die erste Wahl. Die Verwaltung der Docker Engines und das komplette Management ist mit Portainer auch für kleine Docker-Projekte perfekt möglich. Hardwareinformationen wie die Anzahl der Prozessoren und die Größe des Arbeitsspeichers, sowie Docker-spezifische Informationen (Anzahl der Container, Images, Volumes und Networks) sind auf einen Blick ersichtlich. So kann das Dockertool mit seiner übersichtlichen Weboberfläche die Standard-Docker-Funktionen und die Verwaltung problemlos übernehmen.
3.5 Docker Compose
Docker Compose ist ein praktisches Tool für IT-Spezialisten, das den Umgang mit Container-basierten Anwendungen erleichtert. Es ermöglicht die Definition und Verwaltung von Anwendungen, die aus mehreren Containern bestehen.
In einer docker-compose.yml
Datei beschreibt man, welche Container gestartet werden sollen und wie diese zusammenarbeiten. Zum Beispiel kann man festlegen, dass ein Webserver, eine Datenbank und ein Cache gemeinsam gestartet und miteinander verbunden werden.
Mit einem einzigen Befehl (docker-compose up
) lassen sich alle definierten Container gleichzeitig starten. Das spart Zeit und reduziert Fehler. Besonders in der Entwicklung ist Docker Compose nützlich, weil es ermöglicht, Anwendungen lokal so zu testen, wie sie später in der Produktion laufen.
Docker Compose macht die Arbeit mit Containern einfacher und effizienter und ist ein unverzichtbares Werkzeug für die Verwaltung komplexer Anwendungen.
3.6 Kubernetes
Kubernetes ist ein Open-Source-System, welches mit Hilfe von Prozessautomatisierung die Verwaltung der Container übernimmt und somit Hand in Hand mit dem Docker zusammenarbeitet. In einem Helm-Chart werden Konfigurationsdaten an Kubernetes übergeben. Dort wird konfiguriert, welche Container ausgerollt, überwacht und verwaltet werden sollen. Kubernetes löst diese Aufgabe auch mit einer hohen Anzahl an Containern problemlos.
Außerdem kann Kubernetes Ressourcen perfekt einsetzen. Maschinen, die nicht benötigt werden, können entweder ausgeschaltet oder an andere Tasks weitervergeben werden, um Kosten und Kapazitäten zu sparen.
Auch der OPC Router weiß von der funktionierenden Verbindung zwischen Kubernetes und dem Docker. Der OPC Router ist kompatibel mit Kubernetes und stellt entsprechende Helm-Charts zur Verfügung. Beispielsweise das OPC Router Docker Sample, welches Daten aus einem OPC UA Server verarbeitet, diese weiter an einen MS SQL Server gibt und diese Daten anschließend in einem Grafana Dashboard visualisiert (OPC Router Docker Sample bei Github).
3.7 Docker Swarm
Docker Swarm ist eine Technologie, die von IT-Spezialisten genutzt wird, um Container in einem Netzwerk zu verwalten und zu orchestrieren. Es hilft dabei, Anwendungen skalierbar und robust zu machen. Docker Swarm koordiniert, wie Container in einem Cluster laufen. Ein Cluster ist eine Gruppe von Computern, die zusammenarbeiten. Mit Docker Swarm kann man einfach mehr Container hinzufügen oder entfernen, um den Bedarf an Rechenleistung anzupassen. Wenn ein Container ausfällt, startet Docker Swarm automatisch einen neuen Container, um sicherzustellen, dass die Anwendung weiterläuft. Docker Swarm bietet einfache Befehle, um Container zu starten, zu stoppen und zu überwachen.
Es gibt viele Gründe, warum man Docker Swarm nutzen sollte. Es spart Zeit und Ressourcen, da die Verwaltung von Containern automatisiert wird. Es unterstützt verschiedene Arten von Anwendungen und Workloads und bietet integrierte Sicherheitsfunktionen wie Verschlüsselung und Zertifikate.
Wir beantworten Ihre Frage zu Docker, Portainer und Kubernetes.
4. Auf welchen Betriebssystemen läuft Docker?
Ein Docker-Container läuft mit der Docker-Engine direkt unter Linux und auf jedem Host-Computer, der die Container-Laufzeitumgebung „Docker Desktop“ unterstützt (Macintosh und Windows). Sie müssen die Anwendungen nicht an das Host-Betriebssystem anpassen. So kann sowohl die Anwendungsumgebung, als auch die zugrunde liegende Betriebssystemumgebung sauber und minimal gehalten werden. Containerbasierte Anwendungen können so problemlos von Systemen in Cloud-Umgebungen oder von Entwickler-Laptops auf Server verschoben werden, wenn das Zielsystem Docker und alle damit verwendeten Tools von Drittanbietern unterstützt.
4.1 Wie installiere ich Docker?
Die aktuellen Versionen samt Installationshinweisen der Docker-Desktop-Software finden Sie hier:
Informationen zur Installation der Docker-Engine unter verschiedenen Linux-Derivaten und die aktuellen Versionen finden Sie hier:
4.2 Docker Sample mit GitHub
Den OPC Router in einem Docker Container zu deployen bringt einige Vorteile mit sich. Für die erste Anwendung, stellen wir Ihnen auf Github ein Docker Sample zur Verfügung, das ein sehr einfaches und praktisches Beispiel enthält, mit dem Sie Ihr erstes Projekt in einem Docker Container erstellen können.
5. Was ist das Microservices-Modell?
Die meisten Geschäftsanwendungen bestehen aus mehreren separaten Komponenten, die in einem sogenannten „Stack“ organisiert sind. Beispiele hierfür sind ein Webserver, eine Datenbank oder ein In-Memory-Cache. Container ermöglichen es Ihnen, diese einzelnen Komponenten zu einer funktionalen Einheit mit leicht austauschbaren Teilen zusammenzustellen. Verschiedene Container können diese Komponenten beinhalten. So kann jede Komponente für sich gepflegt, aktualisiert und unabhängig von den anderen modifiziert werden. Im Grunde ist dies das Microservices-Modell des Anwendungsdesigns.
Indem die Anwendungsfunktionalität in separate und in sich geschlossene Dienste unterteilt ist, bietet das Modell eine Alternative zu langsamen traditionellen Entwicklungsprozessen und unflexiblen Apps. Leichtgewichtige übertragbare Container machen es einfacher, auf Microservices basierende Anwendungen zu erstellen und zu pflegen.
6. Fazit
Nachdem wir nun die verschiedenen Komponenten der Docker-Architektur kennengelernt haben und wissen, wie sie zusammenarbeiten, können wir die zunehmende Beliebtheit von Docker-Containern und Microservices verstehen. Docker trägt dazu bei, die Verwaltung einer Infrastruktur zu vereinfachen, indem es die zugrunde liegenden Instanzen leichter, schneller und robuster macht. Darüber hinaus trennt Docker, einfach erklärt, die Anwendungsschicht von der Infrastrukturebene und bringt die dringend benötigte Portabilität, Zusammenarbeit und Kontrolle über die Softwarebereitstellungskette. Docker wurde für moderne DevOps-Teams entwickelt. Das Verständnis seiner Architektur kann Ihnen helfen, das Beste aus Ihren containerisierten Anwendungen herauszuholen.
Wir beraten Sie, wie auch Sie die Verwaltung Ihrer Infrastruktur mit Docker vereinfachen können.
Anwendungen und Services mit Docker verwalten
Das Open-Source-Tool Docker bietet die Möglichkeit eine Maschine auf einem Linux-, Mac- und Windows-basierten System mit der IT zu verbinden. Docker Systeme verfügen über ein minimalisiertes Betriebssystem und fordern daher weniger Rechenleistung, als beispielsweise eine Virtuelle Maschine.
Mit Software, wie dem OPC Router, ist das Deployen eines Containers beispielsweise auf einem Edge-Device einfach umzusetzen. Mit nur wenigen Klicks wird die Software über einen Docker Container auf dem Edge-Device installiert und ist einsatzbereit. Daraufhin können viele unterschiedliche Anwendungsfälle umgesetzt werden. Beispielsweise lassen sich ohne Probleme Maschinendaten in die Cloud, in ERP-Systeme, wie SAP oder Datenbanken übertragen. Natürlich lassen sich auch andere ERP-Systeme anbinden, wie zum Beispiel Web-Services oder Rest. Auch die Anbindung eines Industrie-Druckers, wie Zebra, Domino, VideoJet, Wolke oder viele mehr, über ein Edge-Device ist problemlos möglich. Die große Vielfalt sowie die Flexibilität und Effektivität eines Docker-Containers machen ihn in der Praxis sehr beliebt.
Weitere Informationen
Mit dem REST Plug-in wird der OPC Router befähigt REST WebServices abzufragen und auch anzusprechen. Nahezu jedes System lässt sich über eine REST API anbinden und so ist es möglich Daten an diese Systemen zu übergeben und von ihnen abzurufen. Über einen REST Trigger werden ergänzend auch REST Funktionen aufgerufen. Dies ermöglicht einen eigenen REST API Aufbau für verschiedenste Systeme, die mit weiteren verfügbaren Plug-ins angebunden sind.
Über einen Telegram Bot lassen sich Informationen aus fast allen vorstellbaren Bereichen übermitteln, wann immer sie benötigt werden. Auf die spezielle Bot-Funktion dieses Messengers verweisen wir in unserem Beitrag der Knowledge Base “Technik” und informieren auch darüber, wie Sie einen Telegram Bot selbst erstellen können.
Der OPC Router hat mit seinen Plug-ins Verbindungen zu unterschiedlichsten Systemen und somit auch Zugriff auf deren Daten. Mit dem InfluxDB/InfluxDB2 Plug-in ist es möglich, diese Daten direkt an die Influx Datenbanken zu übergeben und Verbindungen zu InfluxDB2-Instanzen und der InfluxDB Cloud herzustellen. So können Sie mit wenigen Aktionen und ohne komplizierte Einstellungen in der Datenbank eine Verbindung herstellen.
Weitere interessante Artikel zu den Themen Industrie 4.0, Cloud, Technik, Alarmierung sowie praktische Anwendungsbeispiele und Case Studies finden Sie in unserer Knowledge Base.