【问题标题】:Access Docker Container Port in a Ubuntu VM在 Ubuntu 虚拟机中访问 Docker 容器端口
【发布时间】:2019-01-04 00:37:53
【问题描述】:

假设 Ubuntu VMWare 机器 (IP: 192.168.10.35) 在内部运行 docker 映像 (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 中是否缺少选项,或者我需要将 VM 内部的端口转发到 docker 映像?

PS:如果我在本地机器上以docker-for-windows 启动图像,我可以通过http://localhost:4620 访问它。

【问题讨论】:

  • 你只绑定到127.0.0.1:4620:80。将该行更改为4620:80,您所拥有的应该可以正常工作。

标签: docker ubuntu vmware ubuntu-18.04


【解决方案1】:

您不能,因为您已明确声明 容器(不是映像)只能从 VM 本身访问。声明

ports:
  - 127.0.0.1:4620:80

将主机上端口 4620 上的入站连接转发到容器中的端口 80,但仅在绑定到 127.0.0.1 的接口上,这是专用环回接口(通常命名为 lo)。当您尝试从主机联系它时,它会到达虚拟机的外部 IP 192.168.10.35,但那里没有任何东西在监听。

如果您移除显式端口绑定,Docker 将侦听所有接口,这通常是您想要的,然后您应该能够通过 VM 的外部 IP 地址访问容器。

ports:
  - '4620:80'

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多