我将一个docker容器发布到了端口'3000',当转到网络浏览器的“ localhost:3000”时,它表明nginx正在工作,但是在我停止并杀死该容器之后,它仍然显示在我的浏览器中,甚至你不应该 注意:我删除了浏览器的所有缓存,Cookie和浏览器历史记录,但仍然显示
答案 0 :(得分:1)
您是否正在使用Linux作为主机操作系统?
Docker容器进程是Linux进程。
一种通用的机制来确定哪个进程正在使用哪个端口,例如:
ss --tcp --listening --processes | grep 3000
更好:
ss --tcp --listening --processes '( src = :3000 )'
注意事项:您可能需要以sudo
的身份运行以上命令,以使进程在root用户下运行。
让我来再现您的问题:
docker run --interactive --tty --publish=3000:80 nginx
然后:
sudo ss --tcp --listening --processes '( src = :3000 )'
State Local Peer
LISTEN *:3000 *:* users:(("docker-proxy",pid=21308,fd=4))
ps aux | grep 21308
21308 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3000 -container-port 80
NB 对上面的内容进行了大量编辑以传达要点。
希望您能看到进程21308
是端口:3000
上的进程
这是与docker-proxy
相对应的进程,并且按照该进程,它将主机的:3000
映射到容器端口:80
。
由于您知道(预期)该过程将成为Docker容器,因此您可以:
docker container ls --all
CONTAINER ID IMAGE COMMAND PORTS
197ee6d0ab00 nginx "nginx -g 'daemon of…" 0.0.0.0:3000->80/tcp
您可以看到主机的:3000
中有一个端口映射(正在使用)。