Aus Linux-Magazin 09/2018

Docker grafisch verwalten

© Igor Groshev, 123RF

Docker hat sich auch in vielen kleinen IT-Infrastrukturen und sogar in Heimnetzen fest verankert. Damit die Container nicht als loser Haufen durch die Infrastruktur marodieren, helfen dem Admin verschiedene GUIs dabei, sie zu verwalten. Die Bitparade beobachtet drei etablierte Lotsen bei der Arbeit.

Kaum eine neue Technologie hat in den letzten Jahren im Linux-Universum für so viel Wirbel gesorgt wie die Containervirtualisierung Docker [1]. Die Software vereinfacht den Umgang mit Anwendungen enorm, indem sie diese in so genannte Container verpackt. Die bilden über Kernel-Features wie Namespaces und Cgroups vom Rest des Systems isolierte Bereiche, teilen sich aber im Unterschied zu virtuellen Maschinen in der Regel den Kernel des Hostsystems. Docker benötigt daher weder einen Hypervisor noch vollständig installierte Gastsysteme und gilt als wesentlich leichtgewichtiger beim Gebrauch der Systemressourcen.

Da Docker-Container aus dem Docker Hub die jeweilige Applikation meist mitbringen, sind keine großartigen manuellen Konfigurationsarbeiten oder der Einsatz von Startup-Skripten oder Installationsassistenten mehr nötig. Im Vergleich zu altbekannten Virtualisierungslösungen lassen sich Docker-Container sehr einfach reproduzieren und auf nahezu allen gängigen Plattformen mit einem aktuellen Kernel einsetzen. Das macht Docker auch für den Einsatz in kleineren IT-Umgebungen interessant.

Im professionellen Bereich, vor allem bei Clouddiensten, lassen sich dank Docker zudem mandantenfähige Anwendungen in mehreren voneinander abgeschotteten Containern simultan betreiben. Diese baut, verwaltet und skaliert der Admin mit Hilfe von Orchestrierungs-Tools wie Kubernetes [2], das Docker-Container in einem selbstheilenden Clustersetup zum Einsatz bringt.

Tabelle 1

Übersicht: Docker-GUIs für kleine Umgebungen

Dockstation

Kitematic

Portainer

Lizenz

Apache 2

Apache 2

Zlib/MIT

Szenario

Auf lokalem Host

ja

ja

ja

Auf Remote-Host

ja

nein

ja

Im Cluster

ja

nein

ja (eingeschränkt)

Mit TLS

ja

nein

ja

Verwaltung

Von Containern

ja

ja

ja

Von Images

ja

nein

ja

Von Volumes

ja

ja

ja

Allgemeines

Usergruppen / User

nein

nein

ja

Direktzugriff auf Docker Hub

nein

ja

ja

Statistiken

ja

eingeschränkt

ja

Zugriff mittels LDAP

nein

nein

ja

Docker-CLI integriert

ja

ja

nein

Plattformen

Deb

Deb (Ubuntu)

Docker

Das komplette Docker-Ökosystem besteht aus zahlreichen Komponenten und Tools. In der Regel steuern es Admins über die Kommandozeile. Doch gerade Gelegenheitsnutzer von Docker stellen die Vielzahl an Parametern und die dadurch relativ steile Lernkurve vor Probleme. Sie können inzwischen auf grafische Oberflächen zum Docker-Management ausweichen, die den Nebeneffekt haben, den Überblick über die Container zu erleichtern. Die Bitparade hat sich einige angesehen, namentlich Dockstation [3], Kitematic [4] und Portainer [5], viele aber wieder aussortieren müssen (siehe Kasten “Nicht berücksichtigt”).

Nicht berücksichtigt

Rancher [6] gehört zu den unter der Apache-Lizenz angebotenen Container-Virtualisierungslösungen. Darüber hinaus bringt das gleichnamige Unternehmen mit Rancher OS auch eine spezielle Linux-Distribution für den Einsatz von Docker. Rancher selbst setzt ab der neuen Version 2.0 allerdings voll auf Kubernetes-Cluster sowie die Anbindung an Docker Swarm [7] oder Apache Mesos [8]. Diese Änderung macht es zwar für große Infrastrukturen fit, für kleine Installationen jedoch ein wenig überdimensioniert.

Das im Docker-Universum weithin bekannte Web-basierte Werkzeug Shipyard [9], das Container auf der Basis von Docker Swarm verwaltet, berücksichtigt die Bitparade nicht, da es keine Pflege mehr erhält. Auch Docker UI [10], eine ebenfalls Web-basierte Docker-Management-Software, entwickelt seit nahezu zwei Jahren niemand mehr. Keine Zuneigung mehr erhalten auch Vagrant und das auf Virtualbox basierende Panamax [11].

Die Macher von Swarmpit [12] und Mesos Marathon [13] entwickeln ihre Software zwar kontinuierlich weiter, adressieren aber andere Zielgruppen: Während sich Swarmpit als Tool zum Management von Docker-Swarm-Umgebungen anbietet, dient Marathon als Orchestrierungs-Plattform für Apache Mesos.

Mit der Docker-Box [14] ist ein weiteres Werkzeug für das Management von Docker-Containern verfügbar, dessen Funktionsumfang jedoch eingeschränkt ist und das auf aktuellen Ubuntu- und Debian-Versionen nicht mehr läuft. Das Werkzeug erhält zudem seit geraumer Zeit keine Aktualisierungen mehr.

Dockstation

Die unter der Apache-2-Lizenz angebotene und auf dem Electron-Framework aufbauende Dockstation [3] ist ein eher auf die Bedürfnisse von Entwicklern zugeschnittenes grafisches Werkzeug. Das Paket wird – anders als üblich – nicht als Docker-Image, sondern als App-Image für den Einsatz auf jedem beliebigen Linux-System angeboten. Für Ubuntu, Debian und seine Derivate steht Dockstation zudem als Deb-Paket zur stationären Installation bereit.

Damit Dockstation sich mit Docker verbindet, sind mehrere Zusatzpakete nötig. Admins müssen vor allem darauf achten, dass ein Paket namens »docker-compose« an Bord ist [15]. Die Installationsroutine legt beim Aufspielen der Software einen Eintrag in der Menüstruktur der jeweiligen Desktopumgebung an.

Nach der erfolgreichen Installation begrüßt Dockstation den Anwender nach dem ersten Start mit einer grafischen Oberfläche, über die sich im Fenster »Add new project« eine animierte Welle bewegt. Optisch lehnt sich die Software offenbar an Kitematic [4] an. Eine am oberen Bildschirmrand horizontal angeordnete Reiterleiste deutet bereits an, dass es sich bei dem Werkzeug weniger um eine Verwaltungs- als um eine Entwicklungsplattform handelt.

Will der Nutzer keinen neuen Container anlegen, sondern eine bereits vorhandene Infrastruktur administrieren, klickt er direkt auf »Containers« und erhält eine Ansicht der bereits im System integrierten Container. Dabei teilt sich das Programmfenster: Während rechts in einer Terminalansicht Systemmeldungen erscheinen, tauchen links vertikal die einzelnen Container auf. Ein Klick auf einen davon öffnet jeweils die aktuelle Terminalansicht.

Zugleich blendet Dockstation darüber horizontal eine Buttonleiste ein, die unter anderem das Stoppen, Neustarten oder Entfernen der Container gestattet (Abbildung 1). Zudem erscheinen Systemmeldungen rechts in der Terminalansicht. Über den Button »Exec« öffnen Nutzer auch eine Terminalansicht mit einer Shell zur direkten Kommando-Eingabe.

Abbildung 1: Dockstation zeigt zahlreiche Informationen zu vorhandenen Containern an.

Abbildung 1: Dockstation zeigt zahlreiche Informationen zu vorhandenen Containern an.

Dockstation beherrscht auch den Umgang mit Docker-Clustern: Oberhalb der Containerliste befindet sich ein Auswahlfeld mit einem links davon angeordneten Bleistiftsymbol. Das Auswahlfeld bezeichnet den jeweiligen Cluster und zeigt voreingestellt die Container auf »localhost« an. Klickt der Anwender auf das Bleistiftsymbol, darf er über einen eingeblendeten Dialog noch weitere Docker-Systeme inklusive ihrer Authentifizierungen integrieren.

Monitoring

Stellen sich auf dem Docker-System Ressourcenprobleme ein, kann der Anwender mit Hilfe von Dockstation deren Ursache rekonstruieren. Dazu steht in der Reiterleiste die Option »Stats Monitor« bereit. Die listet in der Grundansicht tabellarisch untereinander die einzelnen Container und deren Ressourcenverbrauch in einer Zeile auf. Zu den angezeigten Kennzahlen gehören der Arbeitsspeicherbedarf, die CPU-Auslastung und auch die Belastung des zugehörigen Blockgeräts.

Klickt der Admin auf eine der Checkboxen vor den einzelnen Containern, visualisiert Dockstation die Daten zu diesem Container in einer grafischen Übersicht, die es fortlaufend aktualisiert. Der Admin sieht etwa anhand eines fortgeschriebenen Diagramms, wie stark die Arbeitsspeicherauslastung variiert. Dadurch kann er Probleme auf einen Blick lokalisieren und die Ressourcen der betroffenen Container anpassen (Abbildung 2).

Abbildung 2: Über den Monitor überwacht der Admin die Auslastung einzelner Komponenten.

Abbildung 2: Über den Monitor überwacht der Admin die Auslastung einzelner Komponenten.

Mit Hilfe der entsprechenden Buttons oberhalb der Grafik stellt der Administrator ebenso die Intervalle der Gesamtanzeige wie die Aktualisierungsfrequenz ein. Über die Reiter »CPU«, »Memory«, »Network IO« und »Block IO« wechselt er zwischen den einzelnen Kategorien hin und her.

Will er eine permanente, verkleinerte Übersicht der Statusanzeigen erhalten, klickt der Admin oben rechts in der Containeransicht auf den Button »Stats«. Dockstation öffnet nun eine vierfache Diagrammansicht, in der die Ressourcenauslastung des aktiven Containers erscheint. Zwischen den im System aktiven Containern wechselt der Anwender, indem er lediglich links in der Liste auf den gewünschten Container klickt. Dann öffnet sich die Monitoring-Anzeige mit allen vier Diagrammen und aktualisiert sich fortlaufend.

Diese Anzeige erweist sich insbesondere dann als nützlich, wenn der Verdacht besteht, dass aufgrund von Schadsoftware ein Container das Hostsystem angreift. Häufiger dürfte sie aber noch auf Memory Leaks und andere technische Probleme in Containern hinweisen, die zu übermäßigem Konsum von Ressourcen führen. Im Terminal reguliert der Administrator über die Lastangaben die Ressourcenzuteilung, sodass keine Beeinträchtigung des Gesamtsystems mehr entsteht (Abbildung 3).

Abbildung 3: Ein Überblick über den Gesamtzustand des Containers liefert die »Stats«-Anzeige.

Abbildung 3: Ein Überblick über den Gesamtzustand des Containers liefert die »Stats«-Anzeige.

Konfiguration

Um die in den Containern laufenden Applikationen zu konfigurieren, klickt der Anwender in der Containeransicht von Dockstation auf den Button »Web«. Dockstation startet nun den Webbrowser und öffnet über die IP-Adresse des Containers und den zugewiesenen Port die Konfigurationsoberfläche der jeweiligen Applikation.

So richtet der Anwender ohne komplizierte Parametereingabe am Prompt beispielsweise einen WordPress-Container oder eine Suchmaschine ein, die in einem Container aktiv ist. Lässt sich eine Anwendung nicht über einen integrierten Webserver administrieren, graut Dockstation den »Web«-Button automatisch aus und deaktiviert ihn. Das kann beispielsweise bei Datenbanken der Fall sein.

Kitematic

Das unter der Apache-2-Lizenz stehende Kitematic [4] dient primär als Docker-GUI für Plattformen wie Windows oder OS X. Für Linux bietet das Projekt lediglich ein Zip-Archiv an, das sich nach dem Entpacken als Deb-Paket für 64-Bit-Hardware entpuppt [16]. Das explizit für Ubuntu gedachte Installationspaket lässt sich aber problemlos sowohl in Ubuntu 16.04 als auch 18.04 installieren und arbeitet zudem auf Debian 9.

Nach der Installation fügt sich das Programm automatisch in die vorhandene Menüstruktur des eingesetzten Desktops ein. Die noch als Alpha-Release gekennzeichnete aktuelle Version fragt zunächst die Zugangsdaten zum Docker-Hub-Konto des Anwenders ab. Besitzt dieser keinen entsprechenden Account oder will er seine Zugangsdaten nicht preisgeben, kann er diesen Schritt problemlos überspringen.

Anschließend öffnet Kitematic eine intuitiv zu bedienende Oberfläche: Links im Programmfenster reihen sich Docker-Templates in einer Listenansicht aneinander, während die Software rechts im größeren Fenstersegment Applikationen aus dem Docker Hub anzeigt. Diese lassen sich sofort über einen Klick auf »Create« in das lokale Docker-System einbinden (Abbildung 4).

Abbildung 4: Kitematic öffnet den Docker-Hub-Katalog.

Abbildung 4: Kitematic öffnet den Docker-Hub-Katalog.

Anschließend teilt sich das größere Fenstersegment in drei Bereiche: Während mittig die Logdaten des aktuellen Containers in einem Terminalfenster auftauchen, erscheinen rechts die Bezeichnungen der eingerichteten Volumes. Darüber befindet sich eine Webpreview, die – sofern die jeweiligen Container über ein Webinterface zur Konfiguration verfügen – die IP-Adresse und den Port zum Aufruf der Schnittstelle anzeigt.

Über diesen Bereichen befindet sich eine Buttonleiste, mit deren Hilfe der Verwalter die Container direkt steuert. Um beispielsweise zusätzliche Container anzulegen, klickt er auf den »New«-Button oberhalb der Listenansicht, woraufhin Kitematic erneut die Inhalte des Docker-Hub-Repository einblendet.

Da das Fenster allerdings nicht sämtliche Inhalte des Repository vollständig abbilden kann, sucht der Admin alternativ einfach innerhalb des Repository nach Apps. Dafür steht oben mittig im Programmfenster ein Suchfeld bereit. Über den Reiter »My Repos« oben rechts im Programmfenster integriert er weitere Repositories in Kitematic.

Kommt der Administrator an einen Punkt, an dem es nötig wird, Docker-Befehle und Parameter am Prompt einzugeben, so klickt er auf die Schaltfläche »Docker CLI« unten links im Programmfenster unterhalb der Containerliste. Dadurch öffnet sich das Desktop-spezifische Terminal mit der Shell. Tatsächlich bilden weder Kitematic noch die anderen Container-GUIs sämtliche Kommandozeilenbefehle grafisch ab.

Statistiken

Kitematic erlaubt zudem keine statistische Auswertung von Ressourcen im System. Dadurch ist auch kein Echtzeit-Monitoring möglich. Zudem fehlen grafisch aufbereitete Übersichten. Die Software zeigt dem Anwender jedoch immerhin die einzelnen Umgebungsvariablen an, mit denen die Applikationen in den Docker-Containern arbeiten. Dazu klickt dieser auf den Reiter »Settings« oben rechts im Programmfenster. Daraufhin erscheinen die wichtigsten Parameter tabellarisch in Listenform. Diese lassen sich auch entfernen.

Daneben kann der Nutzer über die Reiter »Volumes« und »Network« Daten zu den Volumes und den Netzwerken abfragen. Welche das sein sollen, lässt sich auch in den entsprechenden Dialogen konfigurieren (Abbildung 5).

Abbildung 5: Kitematic bietet derzeit lediglich grundlegende Anzeigefunktionen für Umgebungsvariablen.

Abbildung 5: Kitematic bietet derzeit lediglich grundlegende Anzeigefunktionen für Umgebungsvariablen.

Portainer

Die unter der Zlib- und der MIT-Lizenz publizierte Docker-Benutzerschnittstelle Portainer [5] versteht sich als Management-Werkzeug von lokal gehosteten Docker-Umgebungen oder Docker-Swarm-Clustern. Das Tool setzt dafür mindestens Docker in Version 1.10 voraus. Ein Administrator kann Portainer auf einfachem Wege installieren. Dazu benötigt er lediglich zwei Befehle, die er mit Rootrechten ausführen muss:

docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer  --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Über den Befehl »docker ps« prüft er dann, ob Portainer aktiv ist. Um das Verwaltungs-GUI zu erreichen, startet der Admin einen Browser und gibt die URL »127.0.0.1:9000« ein. Läuft der Browser auf einer anderen Maschine im LAN, gibt er deren IP-Adresse ein.

Auf der Startseite von Portainer legt der Admin zunächst ein Konto mit wahlfreiem Passwort an. Dann koppelt er die Portainer-Instanz mit Docker. Dafür muss Portainer wissen, ob Docker auf der lokalen Maschine arbeitet oder auf einem entfernten System. Im zweiten Fall gibt der Admin die Endpoint-URL an, die der entfernten Maschine entspricht. Nach einem Klick auf »Connect« öffnet sich das Dashboard (Abbildung 6).

Abbildung 6: Das Dashboard von Portainer gewährt einen grundlegenden Überblick.

Abbildung 6: Das Dashboard von Portainer gewährt einen grundlegenden Überblick.

In diesem finden sich alle relevanten Verwaltungsgruppen in der linken Leiste, während die eigentlichen Einstell- und Informationsdialoge rechts im Fenster warten. Die Startseite zeigt übersichtlich, wie viele Container, Images und Volumes Docker verwaltet. Hinzu kommen Informationen zum benutzten Computersystem. Ein Klick auf eine der Optionen liefert weitere Details.

Konfiguration

Portainer gestattet es, Container einfach und mit Hilfe nur weniger Mausklicks zu verwalten. Klickt der Anwender auf das Container-Symbol im Dashboard, tauchen alle vorhandenen Container mit ihren jeweiligen Betriebszuständen in einer Übersicht auf.

Über eine Buttonleiste bedient er die Container anschließend, wobei er diese nicht nur stoppt oder neu startet, sondern auch aus dem System entfernt. Statusabfragen oder die Einsicht in Protokolldateien nimmt er über entsprechende Symbole in der Spalte »Quick actions« vor. Über den Button »Add container« fügt der Anwender in einem neuen Dialog auch einen neuen Container manuell hinzu.

Vordefinierte Applikationen verbergen sich hinter der Option »App Templates« links in der vertikalen Steuerleiste des Dashboard. Dabei listet Portainer die verfügbaren Apps aus dem Docker-Hub-Repository auf. Ein Klick auf eine der Apps öffnet einen Einstellungsdialog, in dem der Portainer-Admin das Netzwerk und die Rechte entsprechend anpasst. Anschließend klickt er auf die Schaltfläche »Deploy the container«. Das legt den Container auf dem Host an und aktiviert ihn. Er erscheint am Ende in der Containerliste.

Analog dazu verwaltet der Admin über die Gruppen »Images«, »Volumes« und »Networks« die entsprechenden Komponenten, wobei diese Dialoge primär das Hinzufügen neuer oder das Entfernen obsoleter Komponenten anbieten (Abbildung 7).

Abbildung 7: Images aus dem Docker Hub lassen sich mit wenigen Klicks auf das lokale System holen.

Abbildung 7: Images aus dem Docker Hub lassen sich mit wenigen Klicks auf das lokale System holen.

Über die Option »Images« kann der Administrator auch die Konfiguration der Images, die auf dem System aktiv sind, einsehen. Dazu klickt er lediglich auf das gewünschte Image und betrachtet im Anschluss in einer sich öffnenden tabellarischen Ansicht Pfadangaben, Umgebungsvariablen und gesetzte Parameter ebenso wie den Ressourcenverbrauch einzelner Komponenten.

Teamwork

Über den Eintrag »User Management« passt der Admin Portainer intern an. Üblicherweise hat nur er Zugriff auf die Verwaltungsoberfläche und dabei uneingeschränkte Rechte. Für einige Funktionen wie das Verwalten von Containern und Volumes gesteht er jedoch über die Option »Restricted« einzelnen Anwendern oder Gruppen, die Portainer in Teams zusammenfasst, Bearbeitungsrechte zu. Das setzt voraus, zunächst im jeweiligen Dialog die Option »Enable access control« per Schieberegler zu aktivieren.

Zusätzlich muss der Admin Teams und User definieren, die er in der Gruppe »User Management« anlegt. Die Untergruppe »Teams« gestattet es, Anwendergruppen mit jeweils den gleichen Rechten der zugehörigen Nutzer zu verwalten. Stattet der Admin einen neu angelegten User mit Administratorrechten aus, ist keine Teamauswahl mehr möglich. In diesem Fall darf der neue Admin alle Verwaltungsaufgaben wahrnehmen (Abbildung 8).

Abbildung 8: Über die Userverwaltung vergibt der Admin Zugriffsrechte in Portainer an Dritte.

Abbildung 8: Über die Userverwaltung vergibt der Admin Zugriffsrechte in Portainer an Dritte.

Protokollarisches

Über die Optionen »Events« und »Engine« lokalisiert der Admin bei Problemen deren Ursache grob. Während die Option »Events« wichtige Systemereignisse protokolliert und in einer Listenansicht anzeigt, gibt der Dialog »Engine« Auskunft über verschiedene Parameter des Systems. Dieser berücksichtigt auch Hardware-Komponenten.

Der Admin erkennt so auch zu schwach dimensionierte Komponenten und kann notfalls nachrüsten. Zusätzlich lokalisiert er in diesen Dialogen auch Lastprobleme, die eine Ressourcenanpassung für einzelne Container nötig machen.

Fazit

Die getesteten grafischen Oberflächen erleichtern den Umgang mit der Virtualisierungslösung Docker in kleinen IT-Infrastrukturen deutlich. Wo keine umfangreiche Orchestrierung nötig und keine Cluster im Datacenter zu verwalten sind, spielen die kleineren GUIs ihre Vorteile der schnellen Installation und intuitiven Bedienung aus.

Dennoch können die grafischen Oberflächen den Einsatz der Kommandozeile für Docker noch nicht vollständig ersetzen. Einige Arbeiten, etwa das Limitieren von Ressourcen, sind bislang nur über die manuelle Parametereingabe am Prompt möglich. Daher integrieren einige GUIs das CLI zusätzlich in Form eines externen Terminalaufrufs.

Sicherheit

Gemeinhin wird Docker als eine sehr sichere Virtualisierungslösung angesehen, da die einzelnen Services voneinander isoliert arbeiten. Diese Annahme übersieht, dass Docker auf Prozessebene arbeitet und daher als Grundvoraussetzung einen dedizierten Host benötigt, dessen Ressourcen sich die Docker-Container teilen. Auf einige Verzeichnisse des Kernels haben alle Docker-Container Zugriff. Diese Schnittstelle stellt eine potenzielle Sicherheitslücke dar, da sie Host und Docker-Container nicht voneinander isoliert.

Um die Gefahr einer Kompromittierung des Hostkernels durch Angriffe aus einem Container zu unterbinden, setzt Docker auf verschiedene Namespaces: Eigene Host- und Domainnamen gehören ebenso dazu wie unterschiedliche Räume für Prozess-IDs und Zugriffsbeschränkungen auf Objekte, die das Dateisystem in den eigenen Namespaces abbildet. Last but not least erhalten Container auch einen eigenen Netzwerkstack mit individuellen IP-Adressen und Routing-Tabellen.

Docker-Container fassen einzelne Prozesse zudem mit Hilfe der Cgroups zu Gruppen zusammen, die nur beschränkte Ressourcen auf dem Host erhalten. So lassen sich beispielsweise die CPU-Auslastung oder der RAM-Verbrauch limitieren. Einen DoS-Angriff aus einem Container, der diese Komponenten voll auslastet und damit zu Instabilität führen würde, kann der Admin so verhindern. Die Limits der Auslastung definiert er dabei nach Belieben.

Daneben lässt sich eine Docker-Installation zusätzlich mit Hilfe externer Lösungen wie SE Linux und App Armor absichern, die entsprechende Zugriffskontrollen definieren und Kernelzugriffe über individuell definierbare Policies reglementieren. Nicht zuletzt gibt es auch Systeme wie Kata Containers [17], die schlanke virtuelle Maschinen und Container aus Gründen der Sicherheit kombinieren.

Es besteht nach der Recherche zudem die berechtigte Sorge, dass zumindest einige dieser Projekte – wie bereits zahlreiche andere – einschlafen. Das wäre allerdings schade, weil dann die Vorteile von Docker mangels geeigneter Verwaltungslösungen womöglich auf große Netz- und Cloud-Infrastrukturen beschränkt bleiben würden.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben