代码之家  ›  专栏  ›  技术社区  ›  pkaramol

docker程序的进程所有者

  •  0
  • pkaramol  · 技术社区  · 7 年前

    我已经开始了一个 nginx host 网络如下:

    docker run --rm -d --network host --name mynginx nginx
    

    但是,在使用 ss 命令,这似乎是一个纯粹的 nginx公司 但是 docker

    $ ss -tuap 'sport = :80'
    Netid               State                  Recv-Q                 Send-Q                                  Local Address:Port                                 Peer Address:Port                
    tcp                 LISTEN                 0                      128                                           0.0.0.0:http                                      0.0.0.0:*                    users:(("nginx",pid=16563,fd=6),("nginx",pid=16524,fd=6))
    

    为什么?

    2 回复  |  直到 7 年前
        1
  •  2
  •   BMitch    7 年前

    --net host . 在该模式下,不设置从主机到容器网络的端口转发(例如。 -p 80:80 ). 如果您完成了端口转发,您将在主机上看到一个docker进程,该进程正在转发到nginx进程的容器命名空间中的同一个端口。

    下面是一个示例,说明如果转发端口而不是使用主机网络名称空间,会是什么样子,以及如何查看容器中的网络名称空间:

    $ docker run --rm -d -p 8000:80 --name mynginx nginx                                                                                
    d177bc43166ad59f5cdf578eca819737635c43b2204b2f75f2ba54dd5a9cffbb
    
    $ sudo ss -tuap 'sport = :8000'              
    Netid State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port 
    tcp   LISTEN     0      128        :::8000                     :::* users:(("docker-proxy",pid=25229,fd=4))
    
    $ docker run -it --rm --net container:mynginx --pid container:mynginx nicolaka/netshoot ss -tuap 'sport = :80'                      
    Netid  State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port 
    tcp    LISTEN     0      128     *:http                  *:*                     users:(("nginx",pid=1,fd=6))
    

    docker-proxy 进程docker将端口转发到容器的默认方式。

        2
  •  0
  •   Light.G    7 年前

    恐怕这里对所谓的 docker process .

    首先, ss nginx pure nginx process .

    pwdx nginx_pid . 否则,每个正在运行的容器都是一个我们可以检查的进程 ps -ef 在它的主机上。

    ps -ef|grep nginx pwdx nginx\u pid 找出这是什么样的过程。