我创建了以下 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。