济南公司做网站,企业网站模板下载哪里好,最近国内网站网站做的最好的是哪个,上海网站制作公司多少钱根据代码看到,pause容器运行着一个非常简单的进程,它不执行任何功能,一启动就永远把自己阻塞住了,它的作用就是扮演PID1的角色,并在子进程称为孤儿进程的时候,通过调用wait()收割这个子进程,这样就不用担心我们的Pod的PID namespace里会堆满僵尸进程了,这也是为什么…根据代码看到,pause容器运行着一个非常简单的进程,它不执行任何功能,一启动就永远把自己阻塞住了,它的作用就是扮演PID1的角色,并在子进程称为孤儿进程的时候,通过调用wait()收割这个子进程,这样就不用担心我们的Pod的PID namespace里会堆满僵尸进程了,这也是为什么kubernetes不随便找个容器,例如Nginx作为父容器,让其他容器加入的原因共享namespace的意思就是父进程先创建一个namespace,然后其他进程加入到该namespace就共享namespace了一、从network namespace看pause容器使用pause容器和共享namespace创建Pod使用docker启动pause进程,以便可以将其他容器添加到Pod中docker run -d --name pause gcr.io/google_containers/pause-amd64:3.0然后,在Pod中运行其他容器,分别是Nginx代理和ghost博客应用Nginx代理的后端配置成http://127.0.0.1:2368,也就是ghost进程监听的地址##创建nginx配置文件vim nginx.conferror_log stderr;events { worker_connections1024; }http {access_log/dev/stdout combined;server {listen80default_server;server_name www.example.com;location/{proxy_pass http://127.0.0.1:2368}}}##启动nginx容器docker run -d --name nginx -v pwd/nginx.conf:/etc/nginx/nginx.conf -p 8080:80 --netcontainer:pause --ipccontainer:pause --pidcontainer:pause nginx为ghost博客应用程序创建另一个容器docker run -d --name ghost --netcontainer:pause --ipccontainer:pause --pidcontainer:pause ghost在这个例子中,我们将nginx容器和ghost容器 加入到pause容器的namespace,如果要访问http://localhost:8080,就能看到ghost通过nginx代理运行,因为pause、nginx、ghost容器之间共享network namespace注意:共享network namespace,一个pod中的nginx容器才能通过127.0.0.1:2368找到ghost,因为在一个network namespace内,才能通过localhost通信,相当于在一台机器里二、从PID namespace看容器在UNIX系统中,PID为1 的进程是init进程,即所有进程的父进程.init进程比较特殊,它维护一张进程表并且不断的检查其他进程的状态.init进程其中一个作用就是当某个子进程由于父进程的错误退出而变成了孤儿进程,就会被init进程收养并在该进程退出时回收系统资源在容器中PID namespace对PID进行隔离,因此每个容器中都可以有独立的init进程.当在主机发送SIGKILL或者SIGSTOP(也就是docker kill或者docker stop命令)强制终止容器的运行时,其实就是在终止容器内的init进程.一旦init进程被销毁,同一PID namespace下的进程也随之被销毁容器中,必须要有一个进程充当每个PID namespace的init进程,使用docker的话,ENTRYPOINT进程就是init进程,如果多个容器之间共享PID namespace,那么拥有PID namespace的那个进程要承担init进程的角色,其他容器作为init进程的子进程添加到PID namespace中举例说明用户容器和PID容器的关系先启动一个pause容器docker run -idt --name pause gcr.io/google_containers/pause_amd64:3.0在运行一个busybox容器,加入pause容器的namespace(Network PID IPC)docker run -idt --name busybox --netcontainer:pause --pidcontainer:pause --ipccontainer:pause busybox上面这种加入的方式也是kubernetes启动pod的原理进入busybox容器查看里面的进程,发现PID1的进程是/pausedocker exec -it busybox /bin/bash/ #ps auxPID USER TIME COMMAND1 root 0:00 /pause5 root 0:00sh9 root 0:00 /bin/bash13 root 0:00 ps aux为什么不用别的容器做init进程,比如Nginx容器,如果由于子进程的父进程意外退出,那么子进程就成了孤儿进程,Nginx容器没办法回收子进程退出后的资源