Контейнерный порт Access Docker в виртуальной машине Ubuntu - PullRequest
0 голосов
/ 04 января 2019

Учитывая Ubuntu VMWare Machine (IP: 192.168.10.35), которая запускает образ докера внутри (IP: 172.0.18.2) и учитывая это docker-compose.yml, как мне получить доступ к Docker Image с моего локального компьютера?

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 отсутствует или мне нужно перенаправить порты изнутри виртуальной машины в образ докера?

PS: если я запускаю образ в docker-for-windows на моей локальной машине, я могу получить доступэто через http://localhost:4620.

1 Ответ

0 голосов
/ 04 января 2019

Вы не можете, потому что вы явно объявили, что контейнер (не образ) доступен только из самой виртуальной машины.Объявление

ports:
  - 127.0.0.1:4620:80

перенаправляет входящие соединения через порт 4620 на хосте на порт 80 в контейнере, но только на интерфейсе, связанном с 127.0.0.1, который является выделенным интерфейсом обратной связи (часто называемым lo).Когда вы пытаетесь связаться с ним с хоста, он приходит на внешний IP-адрес виртуальной машины 192.168.10.35, но там ничего не прослушивается.

Если вы удалите явную привязку порта, Docker будет прослушивать все интерфейсы, чтообычно то, что вы хотите, и тогда вы сможете получить доступ к контейнеру через внешний IP-адрес виртуальной машины.

ports:
  - '4620:80'

(Терминология: образ - это набор статического содержимого файловой системы; вы запускаете контейнеры из образаи устанавливать сетевые подключения к работающим контейнерам. Вы не можете непосредственно видеть, что находится внутри изображения, у изображения нет запущенных процессов, и вы не можете подключиться к изображению самостоятельно.)

...