我在 SUSE Linux Enterprise Server 12 SP1 中遇到了 Docker 的奇怪情况。
我使用 SSH 连接到服务器。首先,我尝试运行一个简单的 nginx 服务器来测试:
docker run -d -p 8081:80 nginx:alpine --name nginxtest
Run Code Online (Sandbox Code Playgroud)
容器启动成功。然后,跑步curl http://localhost:8081就可以了!
<!-- [...] -->
<title>Welcome to nginx!</title>
<!-- [...] -->
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从我的计算机上的浏览器访问它时,http://10.etc.etc.etc:8081请求超时。
但令人惊讶的是,如果我暂时忘记 docker,并直接从服务器使用简单的 HTTP 服务器,例如python3 -m http.server,我会得到:
Serving HTTP on 0.0.0.0 port 8000 ...
Run Code Online (Sandbox Code Playgroud)
当我从计算机上的浏览器访问它时,http://10.etc.etc.etc:8000它就可以工作了!
所以这一定是关于 docker 如何公开其端口的,但这很奇怪,因为它curl http://localhost:8081有效......
我该如何进一步排除故障并解决此问题?
注意:直到昨天我跑步时一切都运行良好systemctl restart wicked(我试图调查另一个不相关的问题)。我也尝试重新启动服务器,但没有帮助。
这是一些可能相关的更多输出......
ifconfig docker0docker0 Link encap:Ethernet HWaddr 02:49:68:4D:40:9B
inet addr:172.17.0.1 …Run Code Online (Sandbox Code Playgroud)