假设一台Ubuntu机器(IP:192.168.10.35)在内部运行了一个VMWare镜像(IP:172.0.18.2),并且给定了这个docker-compose.yml,我如何从我的本地机器访问docker镜像?
version: '3'
services:
sc2:
build: .
ports:
- 127.0.0.1:4620:80
restart: always
networks:
- default
volumes:
- ./sc2ai:/sc2ai
- ./apache/000-default.conf:/etc/apache2/sites-available/000-default.conf
networks:
default:我试图访问192.168.10.35:4620,但连接失败。我遗漏了什么?docker中是否有一个选项-compose missing,或者我是否需要将端口从VM内部转发到docker映像?
PS:如果我在本地机器上用docker-for-windows启动镜像,我可以通过http://localhost:4620访问它。
发布于 2019-01-04 08:49:58
您不能这样做,因为您已经显式地声明容器(不是映像)只能从VM本身访问。该声明
ports:
- 127.0.0.1:4620:80将主机上端口4620上的入站连接转发到容器中的端口80,但仅在绑定到127.0.0.1的接口上转发,该接口是专用环回接口(通常命名为lo)。当您尝试从主机联系它时,它到达VM的外部IP 192.168.10.35,但那里没有任何侦听。
如果您删除显式端口绑定,Docker将侦听所有接口,这通常是您想要的,然后您应该能够通过VM的外部IP地址到达容器。
ports:
- '4620:80'(术语:镜像是一组静态文件系统内容;您可以从镜像启动容器,并与正在运行的容器建立网络连接。您不能直接看到映像中的内容,映像没有任何正在运行的进程,并且您不能单独连接到映像。)
https://stackoverflow.com/questions/54031735
复制相似问题