在Ubuntu VM中访问Docker容器端口

时间:2019-01-04 00:37:54

标签: docker ubuntu vmware ubuntu-18.04

给出一个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访问它。

1 个答案:

答案 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'

(术语:映像是一组静态文件系统内容;您从映像启动容器,并与正在运行的容器建立网络连接。您无法直接查看映像中的内容,映像没有任何运行处理,并且您无法自行连接到图像。)