docker 容器无法调用主机上安装的 apache 服务器 OS
docker container unable to call apache server installed on host OS
我有一个 Ubuntu 服务器,它是 运行 一美分 OS 7 docker 容器。这个 centOS 容器在端口 80 和 443 上有 apache 运行,它们绑定到主机 OS 的相同端口。这个 centOS 容器内部有另一个容器,这个嵌套容器需要调用一个 API ,它由位于外部容器的 Apache 服务器托管。当嵌套容器使用 curl 命令调用 API 时,会出现超时错误。
curl -k https://<public IP of host OS>
但是,嵌套容器能够使用其 public IP ping 主机 OS。此外,使用此命令 ssh root@<public IP of host OS>
.
从嵌套容器通过 ssh 连接到主机 OS
另外,嵌套容器可以访问互联网上的所有网站。
如果您可以 ping、ssh 但不能 http(s) 主机,请检查主机 OS 上的防火墙是否有 http(s)。特别是超时是一个提示。
我们 运行 在 Linux OS 中使用 apache 容器时遇到了类似的问题。在 dockerfile 中,我们允许端口 80 和 443,但是当 运行 容器时,我们发现我们不得不使用 --network host 而不是使用 -p 映射端口。
我有一个 Ubuntu 服务器,它是 运行 一美分 OS 7 docker 容器。这个 centOS 容器在端口 80 和 443 上有 apache 运行,它们绑定到主机 OS 的相同端口。这个 centOS 容器内部有另一个容器,这个嵌套容器需要调用一个 API ,它由位于外部容器的 Apache 服务器托管。当嵌套容器使用 curl 命令调用 API 时,会出现超时错误。
curl -k https://<public IP of host OS>
但是,嵌套容器能够使用其 public IP ping 主机 OS。此外,使用此命令 ssh root@<public IP of host OS>
.
另外,嵌套容器可以访问互联网上的所有网站。
如果您可以 ping、ssh 但不能 http(s) 主机,请检查主机 OS 上的防火墙是否有 http(s)。特别是超时是一个提示。
我们 运行 在 Linux OS 中使用 apache 容器时遇到了类似的问题。在 dockerfile 中,我们允许端口 80 和 443,但是当 运行 容器时,我们发现我们不得不使用 --network host 而不是使用 -p 映射端口。