最佳答案
我已经创建了我的第一个 docker 容器,它正在使用 Go 运行一个服务器,但是我无法从主机外部访问它。我刚从 Docker 开始,所以我有点迷路了。
所以我有一个非常简单的 Go 代码来启动一个服务器,我已经构建了一个 docker 映像来安装 Go 并在 Linux 基础映像中构建代码。我在端口8080上运行服务器,所以我向运行容器的主机公开该端口,如下所示:
docker run -p 8080:8080 dockertest
这个工作和 我可以通过 Docker 的机器 IP 进入服务器(一个出现在 码头快速启动终端启动时) ,问题是我 无法从主机外部访问我托管的网站,,所以如果我尝试打开相同的 IP 地址在我的手机上,它只是给我一个错误: 这个网页是不可用的(ERR _ CONNECTION _ TIMED _ OUT)。
我还尝试像这样指定 IP:
docker run -p 192.168.0.157:8080:8080 dockertest
但是,当我这样做,我可以访问网站,无论是通过多克机的 IP 或指定的 IP 上面的命令行。 我也不确定我应该在那个命令中写入哪个 IP,我用了我电脑的 IP,我也试过127.0.0.1(localhost) ,但是得到了同样的结果: 无论如何都不能通过任何 IP 访问网站。
我在谷歌上搜索了这个问题,发现了很多 StackOverflow 的问题,但都没有帮助我解决这个问题,大多数都是面向 Linux 或 Mac 的,所以这个解决方案并不适用于我的情况。
此外,我可以在我的计算机上运行围棋代码,并通过我的计算机的 IP 从同一网络中的另一个设备访问网站。我不明白为什么我不能访问它时,我正在运行它在 Docker 机器,我突然想到,它可能有一些与 IP 转发或东西,但我是一个完全在网络菜鸟,我主要是一个网络开发人员,几乎没有经验在本地。