无法转发任何 Docker 上的端口

无法转发任何 Docker 上的端口

所以我试图在我的 Ubuntu 20.04.3 LTS 服务器上设置一些网站和其他东西。不同的 WebUI 基于通过 nginx 访问的不同 docker 中的应用程序。但我希望能够连接到我的任何 docker。经过故障排除后,似乎端口转发在我的任何 docker 上都不起作用。它从我的 node-red docker 开始,nginx 也没有工作,现在我已经设置了一个非常简单的 whoami docker 和一个在端口 8000 上运行的非常基本的 web 服务器。我仍然无法连接到它。

如果我使用“docker exec -ti whoami sh”进入docker,我能够通过wget访问web服务器,但不能从docker外部访问。

我搜索了很多,大多数问题都与错误使用 -p 标志或 Web 服务器仅监听本地主机等有关。但这里的情况并非如此。

这是我的测试终端输出,显示发生了什么

$~ docker ps
CONTAINER ID   IMAGE            COMMAND       CREATED              STATUS              PORTS                                       NAMES
726da9705b7f   jwilder/whoami   "/app/http"   About a minute ago   Up About a minute   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   whoami
$~ 
$~ wget -O - http://127.0.0.1:8000/
--2021-10-16 23:19:09--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

--2021-10-16 23:21:21--  (try: 2)  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... ^C
$~ 
$~ docker exec -ti whoami sh
/app # wget -O - http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000 (127.0.0.1:8000)
I'm 726da9705b7f
-                    100% |*****************************************************|    17   0:00:00 ETA
/app # exit
$~ 
$~ cat run.sh
docker run -d -p 8000:8000 --name whoami -t jwilder/whoami
$~ 
$~ 

服务器没有固定到本地主机的证明:

$~ 
$~ docker logs -f whoami
Listening on :8000
I'm 726da9705b7f
^C
$~ 
$~ docker exec -ti whoami sh
/app # ./http
Listening on :8000
2021/10/16 22:36:23 listen tcp :8000: bind: address already in use
/app # exit
$~ 
$~ 

据我所知,docker 服务实际上占用了该端口:

$~ 
$~ sudo lsof -i:8000
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 24976 root    4u  IPv4 112329      0t0  TCP *:8000 (LISTEN)
docker-pr 24984 root    4u  IPv6 114001      0t0  TCP *:8000 (LISTEN)
$~ 
$~ 

但它仍然不起作用。

有人知道出了什么问题吗?我很困惑。

答案1

尝试在不同的端口上运行该容器:

$ docker run --rm -d -p 8001:8000 --name whoami -t jwilder/whoami
64a5059666e0f3db12562a44edf576336f73fcecd5e7d86c1e739259e1ffd307
$ curl localhost:8001
I'm 6a82c9e7371e

如果此方法有效,那么主机上可能发生了一些可疑的事情(可能是带有端口重定向的 iptables)。

相关内容