在 Docker 中无法从容器外部访问主机名

Hostname not accessible from outside the container in Docker

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

version: '2'

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

networks:
  test:
    driver: bridge

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

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

还有办法从外部连接到容器ip吗?

提前致谢。


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

你如何做到这一点取决于你的网络,但是例如,如果你知道你本地机器的 ip 或主机名,你可以(可能)从同一家庭网络上的另一台设备连接(你的 phone?另一台电脑?)使用 http://{ip-of-your-host}:8080。从家庭网络中将其公开到互联网通常需要在路由器上进行端口转发,还可以选择一个域名。

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