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的角度来看,一切都很好。
从我的 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的角度来看,一切都很好。