Da Singularity aus Docker hervorging und um einen kleinen Einblick in die Unterschiede zwischen den beiden Technologien zu erhalten, wurden einem Dockernutzer folgende Fragen gestellt:
<<TableOfContents: Ausführung fehlgeschlagen [list index out of range] (siehe auch die Log-Datei)>>
Wie ist die Qualität der Container im Docker-Hub?
Jeder kann Container ins Docker-Hub stellen und somit können diese auch alles enthalten. Sie werden keiner Prüfung unterzogen. Es gibt allerdings auch Container von verifizierten Anbietern und von Docker selbst getestete Container, auf die man sich verlassen kann.
Wie baue ich einen wirklich sicheren Container, von dem ich wirklich weiß, was drin ist?
Dadurch, dass man beim Containerbau immer einen anderen Container als KernOS nutzt, ist die einzig sichere Variante neben verifizierten Quellen im Docker-Hub, einen Container aus einem lokal vorhandenem Image zu bauen.
Entspricht das angegebene Dockerfile immer dem mit dem der angebotene Container gebaut wurde?
Im Idealfall ja, allerdings gibt es keine Prüfung in dieser Richtung. Theoretisch ist es möglich einen komplett anderen Container anzubieten, welcher dann nicht dem Dockerfile entspricht. Deshalb die Empfehlung, nicht direkt den Container herunterzuladen, sondern das Dockerfile selbst zu nutzen, um einen Container zu bauen.
Inwiefern benötige ich Root-Rechte, um Docker zu nutzen?
Um Docker zu starten, muss man entweder Root sein oder ein Mitglied in der Docker-Gruppe. Es wird ein Dockerdaemon gestartet, welcher den/die Container verwaltet. Dieser Daemon hat Root-Rechte. Innerhalb des Containers hat man dann auch Root-Rechte. Problematisch wird es, wenn man aus dem Container ausbricht, da man dann über den Docker-Daemon Root-Rechte auf dem Host-System hat. $ docker run -v /:/hostOS -i -t CONTAINER
Sofern die User also in der Docker-Group sind, haben sie passwortfreien Rootzugriff auf das System.
Stapeln der Container?
Man kann aus einem Docker-Container einen anderen bauen, indem man diesen als KernOS nutzt. Somit ist es möglich seinen vorhandenen Container immer weiter zu erweitern.
Funktioniert die Kommunikation zwischen den Containern?
Ja, man baut ein sogenanntes Docker-Netzwerk auf.
Wie portabel sind die Docker-Container?
Die Container bestehen aus mehreren Files. Ein Weiterreichen ist möglich, allerdings sollte man eher das Dockerfile weiterreichen, um den Container lokal selbst zu bauen.
Ist Docker sinnvoll für Nutzer ohne Root-Rechte?
Definitiv nicht, da man in der Docker-Gruppe sein muss und über den Dockerdaemon Root-Rechte erhalten kann.
Wie funktioniert die Kommunikation des Containers nach außen?
Über Netzwerkbrücken (Standard), direkt über den Host (vollen Zugriff auf Hostschnittstelle), über ein Overlaynetzwerk (mehrere Hosts, relativ kompliziert umzusetzen).
Erfahrungen mit Docker-APIs?
Gibt es, aber keine Erfahrungen damit.
Hat man Zugriff auf das Filesystem des Hosts aus dem Container?
Normalerweise sollte man nur isoliert im Container arbeiten (können). Allerdings ist es möglich, Verzeichnisse des Hostsystems einzubinden. Achtung: privilege escalation!
Wieso nutzt dein Unternehmen Docker?
Docker wird nur in der EDV für gewisse Microservices genutzt. Unter den Anwendern wird Docker nicht genutzt.
Wieso Docker nutzen im vgl. zu Singularity?
Es kommt auf den Anwendungsbereich an. Als Systemadministrator macht das Nutzen von Docker-Containern durchaus Sinn. Im HPC-Bereich und für Anwender ohne administrative Tätigkeit ist Docker ungeeignet. Bei Docker wird isoliert in einem Container gearbeitet, während man bei Singularity Zugriff auf den Host aus Sicht des Users hat.
Glossar
Begriff |
Erklärung |
Docker-Hub |
Größte Sammlung an Container Images von Docker und deren Community |