docker - Docker 中的容器外部无法访问主机名

我创建了以下 docker 撰写文件:

version: '2'

services:
  testApp:
    image: nginx
    hostname: myHost
    ports:
      - "8080:80"
    networks:
      - test

networks:
  test:
    driver: bridge

从容器外部,我可以使用 localhost:8080 打开网页。但是如果我尝试通过定义的主机名打开网页,它就不起作用。

谁能告诉我如何解决这个问题?

还有一种方法可以从外部连接到容器 ip 吗?

提前致谢。

回答1

测试网络上的其他容器将能够通过该主机名引用它,但不是您的主机。您将机器上的端口 8080 绑定到容器上的端口 80,因此您想要访问该网站的任何外部系统都需要连接到 8080 上的主机(就像您使用 localhost:8080 所做的那样)。

如何做到这一点取决于您的网络,但例如,如果您知道本地计算机的 ip 或主机名,您可以(可能)使用 http:// 从同一家庭网络上的另一台设备(您的手机?另一台计算机?)连接{ip-of-your-host}:8080。从家庭网络中将其暴露给互联网通常需要路由器上的端口转发,以及可选的域名。

但主要的一点是,您的 compose 中的主机名仅与连接到同一 docker 网络(测试)的其他容器相关。除此之外,系统需要连接到主机上的 8080。

相似文章