Docker端口转发创建两个进程

Docker port forwarding create two processes

从我的 Docker 容器转发端口 8545 如下

ports:
      - '127.0.0.1:8545:8545'

在 运行 容器之后,如果我 运行 lsof -i :8545 它会显示两个具有相同 PID 的进程。

COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
vpnkit  6576 Admin   27u  IPv4 0xfdda6e6d5013cf77      0t0  TCP localhost:8545 (LISTEN)
vpnkit  6576 Admin   28u  IPv6 0xfdda6e6d4509106f      0t0  TCP localhost:8545 (LISTEN)

为什么有两个进程运行ning?

如您在 PID 列下所见,没有两个不同的进程。 lsof 列出多个条目的原因是因为该工具向您显示哪个进程具有某些文件描述符的句柄,在您的情况下,单个进程有两个,因为它绑定在两个套接字上 - IPv4 和 IPv6 (如 TYPE 列下所示)。

可以通过两次使用-i参数来限制输出:

lsof -i 4 -i :8545

这对端口和套接字都进行了过滤,应该会提供预期的输出。对于你原来的问题:从docker的角度来看,一切都很好。