容器"gcr.io/google_containers/pause:0.8.0"中的进程做了什么工作?
What work does the process in container "gcr.io/google_containers/pause:0.8.0" do?
我已经清楚docker选项的用法--net=container:NAME_or_ID
,我也看过kubernetes的源代码关于如何配置容器使用[=12=的网络],所以我认为容器 gcr.io/google_containers/pause:0.8.0
中进程所做的唯一工作是 "pause",它永远不会做任何复杂的工作,如 "receiving"、"sending" 或 "routing" .
但是我不确定,因为我找不到gcr.io/google_containers/pause:0.8.0
的Dockerfile
,所以我需要知道的人告诉我真相,谢谢!
pause
sleeps until it receives SIGINT
or SIGTERM
. The Dockerfile 只是将 pause
二进制文件添加到一个空容器中。
在 Kubernetes 中,每个 pod 都有一个 IP,在一个 pod 中存在一个所谓的基础设施容器,它是 Kubelet 实例化的第一个容器,它获取 pod 的 IP 并设置网络命名空间。 pod 中的所有其他容器然后加入 infra 容器的网络和 IPC 命名空间。 infra 容器启用了网桥模式,并且 pod 中的所有其他容器都通过容器模式共享其命名空间。在 infra 容器中运行的初始进程实际上什么都不做,因为它的唯一目的是充当命名空间的家。
引用自What is the role of 'pause' container?:
The pause container is a container which holds the network namespace
for the pod. It does nothing 'useful'. (It's actually just a little
bit of assembly that goes to sleep and never wakes up)
This means that your 'apache' container can die, and come back to
life, and all of the network setup will still be there. Normally if
the last process in a network namespace dies the namespace would be
destroyed and creating a new apache container would require creating
all new network setup. With pause, you'll always have that one last
thing in the namespace.
检查 pause
的 source code and Dockerfile。
我已经清楚docker选项的用法--net=container:NAME_or_ID
,我也看过kubernetes的源代码关于如何配置容器使用[=12=的网络],所以我认为容器 gcr.io/google_containers/pause:0.8.0
中进程所做的唯一工作是 "pause",它永远不会做任何复杂的工作,如 "receiving"、"sending" 或 "routing" .
但是我不确定,因为我找不到gcr.io/google_containers/pause:0.8.0
的Dockerfile
,所以我需要知道的人告诉我真相,谢谢!
pause
sleeps until it receives SIGINT
or SIGTERM
. The Dockerfile 只是将 pause
二进制文件添加到一个空容器中。
在 Kubernetes 中,每个 pod 都有一个 IP,在一个 pod 中存在一个所谓的基础设施容器,它是 Kubelet 实例化的第一个容器,它获取 pod 的 IP 并设置网络命名空间。 pod 中的所有其他容器然后加入 infra 容器的网络和 IPC 命名空间。 infra 容器启用了网桥模式,并且 pod 中的所有其他容器都通过容器模式共享其命名空间。在 infra 容器中运行的初始进程实际上什么都不做,因为它的唯一目的是充当命名空间的家。
引用自What is the role of 'pause' container?:
The pause container is a container which holds the network namespace for the pod. It does nothing 'useful'. (It's actually just a little bit of assembly that goes to sleep and never wakes up)
This means that your 'apache' container can die, and come back to life, and all of the network setup will still be there. Normally if the last process in a network namespace dies the namespace would be destroyed and creating a new apache container would require creating all new network setup. With pause, you'll always have that one last thing in the namespace.
检查 pause
的 source code and Dockerfile。