给出一个Ubuntu VMWare计算机(IP:192.168.10.35
),该计算机在内部运行(IP:172.0.18.2
)中的Docker映像,并给出此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缺少选项吗?还是我需要将端口从虚拟机内部转发到docker镜像?
PS:如果我在本地计算机上的docker-for-windows
中启动映像,则可以通过http://localhost:4620
访问它。
答案 0 :(得分:0)
您不能这样做,因为您已明确声明容器(不是映像)只能从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'
(术语:映像是一组静态文件系统内容;您从映像启动容器,并与正在运行的容器建立网络连接。您无法直接查看映像中的内容,映像没有任何运行处理,并且您无法自行连接到图像。)