2015-11-02 4 views
22

Ich habe klar über die Verwendung der Docker-Option --net=container:NAME_or_ID, ich habe auch den Quellcode von kubernetes über die Konfiguration des Containers, um das Netzwerk von InfraContainer zu verwenden, also ich denke, die einzige Arbeit der Prozess in Container gcr.io/google_containers/pause:0.8.0 ist, ist bekannt "Pause", es wird nie eine komplexe Arbeit wie "Empfangen", "Senden" oder "Routing" tun.Was macht der Prozess im Container "gcr.io/google_containers/pause:0.0.0"?

Aber ich bin mir nicht sicher darüber, weil ich die Dockerfile von nicht finden kann, also brauche ich jemanden, der darüber klar ist, um mir die Wahrheit zu sagen, danke!

Antwort

16

Die Dockerfile ist here: es fügt nur Pause-Binärdatei zu einem leeren Container hinzu.

Der Pausencode lautet here: Er wartet nur, bis er SIGINT oder SIGTERM empfängt.

+0

Ok, vielen Dank, es hilft mir sehr! –

+0

Der Vollständigkeit halber habe ich den Hintergrund in einer separaten Antwort @SunGengze gepostet ... –

36

In Kubernetes hat jeder Pod eine IP und innerhalb eines Pods existiert ein sogenannter Infrastrukturcontainer, der der Kubebyte als erster Container instanziiert und die IP des Pods erwirbt und den Netzwerknamespace einrichtet. Alle anderen Container im Pod werden dann dem Netzwerk- und IPC-Namespace des Infra-Containers hinzugefügt. Der Infra-Container ist im Netzwerk-Bridge-Modus aktiviert, und alle anderen Container im Pod teilen seinen Namensraum über den Container-Modus. Der anfängliche Prozess, der in dem Infra-Container ausgeführt wird, macht effektiv nichts, da sein einziger Zweck darin besteht, als die Heimat für die Namespaces zu dienen.

23

Zitiert aus What is the role of 'pause' container?:

Die Pause Behälter ist ein Behälter, der das Netzwerk-Namespace für den Pod hält. Es macht nichts Sinnvolles. (Es ist eigentlich nur ein wenig bisschen Assembly, die schlafen geht und nie aufwacht)

Das bedeutet, dass Ihr ‚Apache‘ Container sterben können, und kommen zurück in Leben und alle Netzwerk-Setup wird immer noch Dort. Normalerweise, wenn der letzte Prozess in einem Netzwerk-Namespace stirbt, wäre der Namespace zerstört und das Erstellen eines neuen Apache-Containers würde erfordern, dass alle neuen Netzwerkeinstellungen erstellt werden. Mit Pause haben Sie immer diese letzte Sache im Namespace.