2015-10-25 4 views
5

Wie unterscheidet sich Docker Namespace von Host Namespace und wie kann die PID zwischen diesen beiden zugeordnet werden? Kann jemand mir eine Idee geben, die hilft, pid's zwischen host n docker unter Verwendung des Quellcodes zu kartieren?PID-Zuordnung zwischen Docker und Host

Antwort

5

Wie ich in "Running docker securely" erwähnt:

Zurzeit verwendet Docker fünf Namespaces Prozessen Ansicht des Systems zu verändern: Prozess, Netzwerk, Berg, Hostnamen, Shared Memory.

Die Tatsache, dass standardmäßig, wie ich in der vorherigen Frage „Docker Namespace in kernel level“ der Behälter pid erwähnt werden vom Host getrennt (es sei denn Sie sie mit --pid host laufen) ist konstruktionsbedingt.

Wenn Sie --pid=host verwenden, sind diese Container-PIDs zwar vom Host aus sichtbar, aber nicht einfach mit einem bestimmten Container zu vergleichen, erst wenn issue 10163 and --pid=container:id aufgelöst ist.

Update Mai 2016: issue 10163 and --pid=container:id wird tatsächlich von PR 22481 für Docker 1.12 gelöst, so dass der PID-Namespace eines anderen Containers hinzugefügt werden kann.

+0

Wenn ich ein Shell-Skript innerhalb des Docker-Container ausführen und das einige syscall aufruft, übergibt diese Zeit die PID des Host- oder Docker-Prozesses pid? Bitte helfen Sie hier –

+0

@SowndaryaK Wenn Sie --pid = Host verwenden, wird die PID des Prozesses im Docker-Container Teil des Host-PID-Namespace. – VonC

3

Sie können die Zuordnung in /proc/PID/status Datei finden. Es enthält eine Zeile wie:

NSpid: 16950 24 

was bedeutet, dass 16950 auf dem Host 24 im Inneren des Behälters ist.

Verwandte Themen