Docker – Virtualisierung mal anders

Thema im Fokus: Das Docker-Prinzip

Eine Einführung in das Docker-Prinzip

Seit ein paar Jahren stoßen Sie immer häufiger auf die Begriffe Docker, Docker-Container oder oft auch nur Container. Vor allem immer dann, wenn es darum geht, schnell, leicht – gemeint ist meist  ohne grossen technischen Background – IT-Anwendungen zu erstellen und zu betreiben. Doch wie bei so vielen gehypten Themen, gibt es auch zum Thema Docker viel Wissens-Wildwuchs. Deshalb widmen wir uns in diesem Beitrag dem Docker-Prinzip und beantworten folgende Fragen:

  1. Was genau IST Docker?
  2. Wie funktioniert das Docker-Prinzip?
    Was bedeuten die Begriffe Docker-Container, -Image etc?
  3. Welche Vorzüge hat das Docker-Prinzip?
  4. Sind Docker-Container identisch/vergleichbar mit Containern der Servervirtualisierung?
  5. Welche Sicherheits-Risiken gibt es bei der Verwendung der Docker-Technologie?
  6. Ist Docker sicher genug für den Produktivbetrieb?

1. Was genau IST Docker?

Docker ist eine Softwareplattform, welche die Erstellung, Verwaltung und Ausführung von Anwendungen in Containern ermöglicht. Docker-Container sind eine Form der Virtualisierung. Hier wird eine Anwendung und ihre Abhängigkeiten in einer isolierten Umgebung ausgeführt. Diese wiederum sind von anderen Docker-Containern auf demselben Host getrennt.

Mehrere Docker-Container werden über die Docker-Engine auf derselben Infrastruktur betrieben.
Das Prinzip Docker

2. Wie funktioniert das Docker-Prinzip?

Docker-Image

Als erstes erstellt man ein Docker-Image. Dieses enthält alle Abhängigkeiten und Konfigurationen, welche die Anwendungen im Container benötigen.

Docker-Container

Durch das Starten eines Docker-Images wird ein Docker-Container erstellt. Das Ergebnis ist der Start eines laufenden Prozesses in der isolierten Umgebung des Docker-Containers. Natürlich ist es wie in jeder Virtualisierungsumgebung wichtig, dass man die Docker-Container überwacht und verwaltet. Denn nur so ist sicherzustellen, dass sie wie erwartet funktionieren.

Danach kann man den Docker-Container ganz einfach durch Duplizieren auf verschiedene Hosts verteilen. Das ermöglicht Skalierung und Lastverteilung.

Hauptnutzen

Mit Docker können Sie bzw. Ihre Agentur Anwendungen und ihre Abhängigkeiten schnell und einfach erstellen, verteilen oder ausführen. Das funktioniert unabhängig von der zugrunde liegenden Infrastruktur. Daher ist Docker eine beliebte Technologie für die Containerisierung von Anwendungen. Deshalb erfreut sich das Docker-Prinzip vor allem bei Agenturen großer Beliebtheit. Folglich finden Sie Docker immer mehr im Einsatz bei Internet-Anwendungen vieler Unternehmen und Organisationen.

3. Welche Vorzüge hat das Docker-Prinzip?

Portabilität

Als erstes ist da die einfache Portabilität von Docker -Containern zu nennen. Sie können auf verschiedenen Betriebssystemen laufen. Ein Docker-Container, der auf einem Entwicklungsrechner läuft, kann problemlos auf einem Produktivserver portiert werden.

Skalierbarkeit

Mit Docker lassen sich Anwendungen schnell und einfach skalieren, indem man Docker-Container repliziert und auf verschiedenen Hosts bereitstellt.

Isolierbarkeit

Jeder Docker-Container ist eine isolierte Umgebung, die von anderen Docker -Containern auf demselben Host getrennt ist. Dadurch können verschiedene Versionen von Anwendungen oder Bibliotheken gleichzeitig ausgeführt werden, ohne sich gegenseitig zu beeinflussen.

Effizienz

Docker-Container benötigen weniger Ressourcen als komplette virtuelle Maschinen wie zum Beispiel bei VMware oder Hyper-V. Denn sie teilen sich den Kernel des Hosts. Das bedeutet, dass auf einem Host mehr Docker-Container Platz finden, als z. B. VMware-Container. Allerdings ist der Ressourcen-Verbrauch verglichen mit Open VZ (Virtuozzo) nicht wirklich geringer. Hier spielt also die Wahl der Virtualisierungsumgebung ebenfalls eine Rolle.

Reproduktion

Mit Docker können Sie Ihre Anwendungen und deren Umgebungen als Images definieren. Diese Images lassen sich in verschiedenen Umgebungen betreiben und ermöglichen eine reproduzierbare wie vorhersehbare Ausführung.

Schnelle Bereitstellung

Docker-Container können schnell und einfach bereitgestellt werden, wodurch die Zeit von der Entwicklung bis zur Produktion verkürzt wird.

Integration

Docker lässt sich gut in viele andere Tools und Systeme integrieren und bietet Schnittstellen zu verschiedenen Automatisierungstools und Infrastruktursystemen wie Kubernetes, Jenkins und Ansible.

Diese Vorteile machen Docker zu einem sehr nützlichen Werkzeug für Entwickler und Systemadministratoren, die skalierbare und effiziente Anwendungen bereitstellen müssen.

4. Sind Docker-Container identisch/vergleichbar mit Containern der Servervirtualisierung?

Ziehen wir Virtuozzo-Containern, Open VZ-Containern oder Linux-Containern zu diesem Vergleich heran. Docker-Container und Virtualisierungs-Container benutzen den Betriebs-System-Kern (Kernel) gemeinsam. Die „klassischen“ Virtualisierungs-Container basieren auf einem Hypervisor, einer Virtualisierungs-Software. Docker-Container basieren auf der Docker-Engine. Zwischen beiden gibt es einerseits Gemeinsamkeiten, sie sind jedoch NICHT vergleichbar und schon gar nicht identisch.

 

Mehrere Virtuelle Server werden über die die Virtualisierungs-Software auf derselben Infrastruktur betrieben.
Mehrere Virtuelle Server werden über die die Virtualisierungs-Software auf derselben Infrastruktur betrieben.

 

5. Welche Sicherheits-Risiken gibt es bei der Verwendung der Docker-Technologie?

Das Docker-Prinzip bietet sicherlich ein paar attraktive Vorteile. Doch Sie sollten die Rückseite der Medaille kennen, bevor Sie sich allzusehr dafür begeistern.

Schwache Konfiguration

Docker-Container sollten so konfiguriert werden, dass sie nur die benötigten Berechtigungen und Ressourcen haben, um ihre Arbeit zu erledigen. Wenn Container zu viele Berechtigungen haben, können sie zu einem Sicherheitsrisiko auswachsen.

Angriffe auf Kernel-Lücken

Container teilen den Host-Kernel. Das bedeutet, dass Hacker eine Schwachstelle im Kernel von einem Container ausgenutzen können, um auf andere Container oder sogar den Host selbst zuzugreifen.

Unsichere Images

Docker-Images sollten von vertrauenswürdigen Quellen stammen und sollten auf bekannte Schwachstellen gescannt werden, um sicherzustellen, dass sie nicht anfällig für Angriffe sind.

Unsichere Netzwerkkonfiguration

Docker-Container können über das Netzwerk kommunizieren, was bedeutet, dass eine schlechte Netzwerkkonfiguration zu Sicherheitsproblemen führen kann.

Schwache Zugriffskontrollen:

Docker-Container brauchen starke Zugriffskontrollen für den sicheren Betrieb, um unbefugte Zugriffe auf die Container und ihre Daten zu verhindern.

Die Anwendung der Docker-Technologie in Entwicklungsumgebungen ist sicherlich weniger problematisch, als in Produktiv-Umgebungen. Aber dennoch ist es in jedem Fall wichtig, diese Risiken zu berücksichtigen und entsprechende Maßnahmen für den sicheren Betrieb von Docker zu gewährleisten. Zu den empfohlenen Sicherheitsmaßnahmen gehören das Verwenden von sicheren Images, die Einschränkung von Berechtigungen, die Verwendung von Netzwerkisolierung und das Anwenden von Zugriffskontrollen auf Container und Hosts.

5. Ist Docker sicher genug für den Produktivbetrieb?

Out-of-the-box ist das nicht der Fall, da die Docker-Technologie eher in Richtung leichte und schnelle Bedienbarkeit als in Richtung Sicherheit konzipiert wurde. Es sind viele Fälle dokumentiert, bei denen durch leichtfertigen Umgang Sicherheitslücken aufgetreten sind und ausgenutzt wurden.

Docker kann sicher genug für den Produktivbetrieb sein, wenn man die Sicherheitsmaßnahmen korrekt implementiert. Es gibt viele Unternehmen, die Docker erfolgreich in ihrer Produktionsumgebung einsetzen, einschließlich großer Unternehmen wie Spotify, eBay und PayPal.

Um Docker sicher in der Produktion zu betreiben, sollten Sie sicherstellen, dass Sie die folgenden bewährten Sicherheitsmaßnahmen implementieren:

  1. Verwenden Sie nur vertrauenswürdige Docker-Images von offiziellen oder verifizierten Quellen. Ideal ist der Betrieb einer eigenen Docker-Registry.
  2. Reduzieren Sie die Angriffsfläche, indem Sie Container nur mit minimalen Rechten und maximalen Einschränkungen ausführen.
  3. Isolieren Sie Container in einem sicheren Netzwerk, um zu verhindern, dass unbefugte Benutzer darauf zugreifen.
  4. Überwachen Sie Container und Hosts auf Anomalien und Schwachstellen (Docker-Monitoring).
  5. Halten Sie alle Docker-Komponenten, einschließlich Hosts, Images und Anwendungen, auf dem neuesten Stand, um Schwachstellen zu beheben.
  6. Implementieren Sie Zugriffskontrollen und saubere Authentifizierung, um sicherzustellen, dass nur autorisierte Benutzer auf die Docker-Infrastruktur zugreifen können.
  7. Verwenden Sie Tools wie Docker Bench for Security, um Ihre Docker-Konfiguration auf bekannte Schwachstellen zu überprüfen.

Durch die Umsetzung dieser Maßnahmen und eine sorgfältige Planung und Implementierung können Sie Docker mit minimalen Sicherheits-Risiken in der Produktion einsetzen.

Übrigens

Sie haben sicherlich bemerkt, dass unsere Einstellung gegenüber dem Docker-Prinzip als Virtualisierungsumgebung eher verhalten ist. Aber wir wissen auch, dass in bestimmten Bereichen, wie zum Beispiel in der Typo3-Systementwicklung, der Einsatz von Docker irgendwann sie Regel sein wird. Schließlich ist der sichere Umgang mit echter Servervirtualisierung für nicht gerade wenige  Agenturen eine echte Herausforderung. Vor allem, wenn sie uns als Projektpartner eher ablehnend gegenüber stehen.

Doch das geht zu Lasten unserer gemeinsamen Kunden. Und das wollen wir nicht. Deshalb bieten wir an: Wenn Sie sich eine (eigene) sichere Docker-Registry wünschen, dann ist die BB-ONE.net durchaus in der Lage, Sie dabei zu unterstützen. Fragen Sie einfach nach…