Heim > Artikel > Betrieb und Instandhaltung > Was macht Chroot im Docker?
In Docker ist chroot eine Operation in Unix- und Linux-Systemen. Sie ändert das scheinbare Stammverzeichnis eines laufenden Softwareprozesses und seiner Unterprozesse, sodass das Programm nicht darauf zugreifen kann außer dem Verzeichnis.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Docker-1.13.1-Version, Dell G3-Computer.
chroot
Containertechnologie hat sich seit dem ersten Aufkommen von Chroot im Jahr 1979 entwickelt.
Wikipedia definiert Chroot wie folgt:
ist eine Operation in Unix- und Linux-Systemen, um das scheinbare Stammverzeichnis eines laufenden Softwareprozesses und seiner untergeordneten Prozesse zu ändern. Ein Programm, das in dieser Umgebung ausgeführt wird und das Stammverzeichnis über chroot festlegt, kann nicht auf Dateien außerhalb des angegebenen Stammverzeichnisses zugreifen, diese nicht lesen und deren Inhalt nicht ändern.
Laienhaft ausgedrückt kann chroot das Stammverzeichnis eines Prozesses ändern, sodass das Programm nicht auf andere Verzeichnisse außerhalb des Verzeichnisses zugreifen kann. Dies ist dem, was wir in einem Container tun, sehr ähnlich. Nachfolgend verwenden wir ein Beispiel, um Chroot zu demonstrieren.
Chroot-Beispielbeschreibung:
1), mkdir rootfs
#Erstellen Sie ein Verzeichnis mit dem Namen: rootfs im aktuellen Verzeichnis
2), cd rootfs
#Geben Sie das Verzeichnis mit dem Namen: rootfs
3) ein, Docker-Export $ (docker create docker101tutorial) -o docker101tutorial.tar
#Exportieren Sie das Dateisystem des Containers mit dem Namen: docker101tutorial als docker101tutorial.tar-Archivdatei nach docker101tutorial.tar und speichern Sie es
#Es kann auch einfach wie unter „Erstellt einige“ verstanden werden Verzeichnisse und platzierte einige Binärdateien unter rootfs
4), tar -xf docker101tutorial.tar
#Extrahieren Sie den Inhalt der Datei docker101tutorial.tar
5), ls
#Anzeigen des Dateiinhalts im aktuellen rootfs-Verzeichnis
6), chroot /Users/xiaoqin.wu/rootfs /bin/sh
#Starten Sie einen sh-Prozess und verwenden Sie /Users/xiaoqin.wu/rootfs als Stammverzeichnis des sh-Prozesses
Vergleich In der obigen Abbildung stimmt das Ergebnis von Befehl 5: ls zum Anzeigen des Dateiinhalts im Verzeichnis /Users/xiaoqin.wu/rootfs mit dem Ergebnis von Befehl 7 überein: ls zum Anzeigen des aktuellen Prozesses im sh-Prozess An diesem Punkt zeigt sich, dass die Verwendung von chroot den aktuellen Prozess realisiert und die Host-Isolation und ein verzeichnisisolierter Container abgeschlossen sind, er jedoch noch nicht als Container bezeichnet werden kann.
Die Gründe sind wie folgt:
Verwenden Sie Befehl 8: netstat -nr, um die Routing-Informationen anzuzeigen.
Aus den Ergebnissen geht hervor, dass die Netzwerkinformationen nicht isoliert sind. Tatsächlich sind der Prozess und andere Informationen isoliert Derzeit nicht isoliert. Um einen vollständigen Container zu erreichen, müssen drei weitere Linux-Technologien implementiert werden, nämlich:
Namespace
Cgroup
United File System
Empfohlenes Lernen: „Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas macht Chroot im Docker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!