容器"gcr.io/google_containers/pause:0.8.0"中的流程有什么作用?

Sun*_*gze 37 docker kubernetes

我已经清楚地知道了--net=container:NAME_or_IDdocker 选项的用法,我也读过kubernetes的源代码,关于如何配置容器以使用网络InfraContainer,所以我认为容器gcr.io/google_containers/pause:0.8.0中进程的唯一工作就是"暂停",它永远不会做任何复杂的工作,如"接收","发送"或"路由".

但我不知道这件事,因为我无法找到Dockerfilegcr.io/google_containers/pause:0.8.0,所以我需要有人清楚地知道它告诉我真相,谢谢!

Mic*_*las 51

在Kubernetes中,每个pod都有一个IP,在一个pod中有一个所谓的基础架构容器,它是Kubelet实例化的第一个容器,它获取pod的IP并设置网络命名空间.然后,pod中的所有其他容器都加入infra容器的网络和IPC名称空间.infra容器启用了网桥模式,并且pod中的所有其他容器通过容器模式共享其命名空间.在infra容器中运行的初始进程实际上没有任何效果,因为它的唯一目的是充当命名空间的主页.


mmo*_*oya 40

引用'暂停'容器的作用是什么?:

pause容器是一个容纳pod的网络命名空间的容器.它没有任何"有用".(它实际上只是一点点组装,进入睡眠状态,从不醒来)

这意味着您的"apache"容器可能会死亡,并恢复生机,所有网络设置仍然存在.通常,如果网络命名空间中的最后一个进程死亡,则命名空间将被销毁,并且创建新的apache容器将需要创建所有新的网络设置.暂停时,您将始终在命名空间中拥有最后一件事.


cri*_*sti 23

Dockerfile在这里:它只是将暂停二进制文件添加到空容器中.

暂停代码在这里:它只是等待它接收SIGINTSIGTERM.

  • 为了完整起见,我已经在单独的答案@SunGengze 中发布了背景...... (2认同)