首页 > 解决方案 > 在 Ubuntu 虚拟机中访问 Docker 容器端口

问题描述

192.168.10.35给定一个在 (IP: )内部运行 docker 映像的 Ubuntu 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 中是否有一个选项丢失或者我需要将虚拟机内部的端口转发到 docker 映像?

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

标签: dockerubuntuvmwareubuntu-18.04

解决方案


您不能,因为您已明确声明容器(而非映像)只能从 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'

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


推荐阅读