Die neue Container-Technologie Docker wird in Unternehmen heiß diskutiert. Sie birgt unzählige Möglichkeiten aber auch einige Gefahren. Das Problem mit Docker ist, dass die Technologie relativ jung ist (auch wenn Container in Linux generell schon älter sind). Die Software und die Tools rund um die Software sind noch nicht ausgereift, Security-Fragen müssen noch geklärt werden und das allgemeine Verständnis rund um Container und Docker ist auch wenig verbreitet.
Immer noch gibt es den Mythos: "man programmiert eine Anwendung in einem Container und schiebt diesen dann in Produktion”. Das wird zwar funktionieren, aber folgende Punkte zeigen, dass man sich für einen Docker-Container im produktiven Betrieb Gedanken machen muss:
Docker befindet sich noch relativ am Anfang seiner Entwicklung. In letzter Zeit kam jede Docker-Version mit Änderungen welche Probleme verursacht haben. Außerdem haben sich die Namen der Installations-Pakete geändert von docker.io zu docker-engine zu docker-ce. Das erschwert ein Upgrade.
Docker ändert für das Forwarding IPTables-Regeln. Hat man eine Firewall auf seinem Server kann es sein, dass die Docker-Regeln damit gelöscht werden.
Ein Beispiel dazu: Shorewall leert beim Start die IPTables-Regeln und schreibt eigene Regeln. Docker benötigt wiederum seine eigenen Regeln die es beim Start anlegt. Wird Docker vor der Shorewall gestartet überschreibt diese die Docker Regeln. Fügt man die Docker-Regeln nachträglich hinzu, funktioniert zwar der Betrieb, allerdings werden diese Regeln beim nächsten Neustart der Shorewall wieder rausgelöscht. Es scheint so als ob hier mit einem Workaround gearbeitet werden muss.
Kolab 3.4 konnten wir in einem Docker-Container auch nach vielen Versuchen nicht installieren. . Ein ähnliches Problem hatte jemand mit Erlang-Programmen.
Bei Images ist oft nicht klar gekennzeichnet ob sie in Verwendung sind und wozu sie überhaupt da sind:
Außerdem gibt es noch kein Docker-Command zum Löschen alter Images.
"Früher hatte man eine veraltete Applikation, jetzt hat man eine veraltete Applikation und ein veraltetes System.” – Dieses Szenario kann sich daraus ergeben, dass man nicht mehr auf traditionelle Weise updaten kann.
Im Sinne von Docker gibt es ein "Basis”-Image, welches die Plattform/Umgebung anbietet und indem dann Sicherheitsupdates eingespielt werden können. Dieses Basis-Image wird in einem Dockerfile verwendet um ein Applikations-Image zu erstellen. Ein Update könnte dann so aussehen, dass man zuerst das Basis-Image rebuilded (und dabei aktualisiert) und danach das Applikationsimage.
Passen die Images die jemand anderer zur Verfügung stellt auch für den eigenen Gebrauch? Falls nicht, wer erstellt die Images?
Sehr schnell passiert es, dass ein Image nicht von einem erfahrenen Administrator erstellt wird. Im Betrieb stellt sich dann heraus, dass viele Einstellungen fehlen oder sogar gefährlich konfiguriert sind und dadurch Sicherheitslücken entstehen.
Tools und Libraries rund um Docker sind noch sehr jung und teilweise noch am Entstehen. Junge Projekte müssen sich häufig noch am Markt durchsetzen. Außerdem leiden sie häufig an Kinderkrankheiten (bzw Bugs). Infos
Kann man die Docker-Images upgraden? Was passiert mit den Daten die upgegraded werden? (z.B: redmine-upgrade mit plugins). Ein Container kann viele Jahre ohne Updates laufen (was wir bei toscom absolut nicht anraten). Doch was passiert, wenn die Anwendung mit vielen Daten gefüttert wurde? Kann man dann den Container auch noch upgraden? Selbst wenn die Daten auf einem persistenten Volume liegen, kann es sein, dass diese bei einem Upgrade angepasst werden müssen weil sich Strukturen geändert haben. Upgrades können oft komplexer sein und benötigen häufig manuelle Eingriffe. Docker kann den Applikations-Update-Vorgang erschweren.
Auch wenn es schon "trusted” Container auf hub.docker.com gibt, bedeutet das nicht automatisch, dass folgende Punkte positiv beantwortet werden:
Natürlich können immer noch selbst Audits geführt und Container gescannt werden. Zum Beispiel mit https://github.com/OpenSCAP/container-compliance
Wenn es um eine besonders sicherheitskritische Anwendung geht würde ich diesen Punkt in Erwägung ziehen. Container sind leichtgewichtig da sie den Kernel und Resourcen des Systems ohne einer Schicht dazwischen mitverwenden. Ein Container entsteht hauptsächlich durch Namespaces. Der Kernel setzt einen Container-Prozess in einen eigenen Namespace wodurch dieser Prozess isoliert wird. Ohne zusätzlichen Schutz, könnten die Container trotzdem noch auf Resourcen des Wirtssystems zugreifen. Es gibt unterschiedlichste Schutzmechanismen:
Folgende Probleme bleiben aber durch dieses Konzept offen:
Die Container-Technologie ist ein sehr spannendes Thema. Neue Möglichkeiten eröffnen sich, allerdings ist die Technologie noch neu und steckt doch noch in den Kinderschuhen. Die Probleme von Docker werden in den nächsten Jahren bestimmt noch gelöst und es werden bestimmt noch viele neue Tools rund um die Docker-Infrastruktur entwickelt. Aber letztendlich muss man sich derzeit noch fragen, ob man Docker wirklich produktiv einsetzen will, oder ob man nicht auf andere Technologien (zB: LXC/LXD) ausweicht.
Wir von toscom sind Spezialisten für Open Source und beraten Sie gerne zu bestehender oder geplanter Webinfrastruktur. Unsere Provider-Unabhängigkeit ist dabei ein Garant für unsere Objektivität.
Seit 2003 machen wir nicht nur Webentwicklern das Leben leichter. Als leidenschaftliche Techniker lieben wir gute Lösungen und als 100% remote Company effiziente Abläufe und Kommunikation.
Lernen Sie uns, unsere Partner und unsere Kunden kennen.
toscom GmbH | Breiteneckergasse 32, 1230 Wien | +43 720 11 66 06 | office@toscom.at
Alle Preisangaben verstehen sich exkl. MwSt.
Aus Gründen der besseren Lesbarkeit wird bei Personenbezeichnungen und personenbezogenen Hauptwörtern auf dieser Website die männliche Form verwendet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für alle Geschlechter. Die verkürzte Sprachform hat nur redaktionelle Gründe und beinhaltet keine Wertung.
It appears you have deactived JavaScript in your browser. This feature is only available with JavaScript turned on. If you don't want your data to be collected, you can still turn on Do Not Track in your browser which is a general setting and is being respected by our Matomo installation.