Использование IP-адреса сети docker bridge для доступа к vhost в контейнере apache

Я хотел бы понять, как я могу получить доступ к домену, настроенному в vhost внутри контейнера докеров, предоставив запись в моем локальном файле / etc / hosts с сетевым IP-адресом докер-моста.

  1. Я использую docker-compose (v2)
  2. IP-адрес сетевого моста Docker (по умолчанию): 172.17.0.1
  3. У меня есть контейнер apache, работающий на 172.19.0.10

Vhost прост как:

<VirtualHost *:80>
  ServerName mywebsite.local

В моем локальном файле / etc / hosts у меня есть: 172.17.0.1 mywebsite.local

И это работает ... но как?
Использует ли Docker порт, чтобы угадать, куда перенаправить трафик (с 172.17.0.1 на 172.19.0.10)?
Может ли кто-нибудь дать мне некоторые объяснения и, если возможно, документацию?

Спасибо.


person BatsaxIV    schedule 03.04.2017    source источник


Ответы (2)


В какой-то момент вам пришлось запустить свой контейнер / докер примерно так:

docker run -d -p 1337:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND

1337:80 означает, что localhost:1337 в вашем браузере ищет порт 80 и, следовательно, ваш apache-контейнер.

Надеюсь, что вы имели в виду ?!

См. Также это или то.

person Hello Fishy    schedule 03.04.2017
comment
Я использую docker-compose, и единственное, что можно сделать, это использовать директиву ports: ports: - 80:80 - person BatsaxIV; 03.04.2017
comment
Итак, вы идете: запросы, поступающие на порт 80, отправляются на внутренний порт 80, который является вашим apache (определяется командой запуска, а также самим vhost). так что замените 1337 на 80 в моем объяснении и готово :) - person Hello Fishy; 03.04.2017
comment
Docker будет прослушивать все интерфейсы, то есть *:<port> на хосте, если вы не укажете IP-адрес в сопоставлении портов. Хотя localhost:<port> работает, остальные адреса тоже. - person Matt; 04.04.2017

Вы можете попробовать использовать

docker run -d --network=host <image> или в докере создайте network_mode: "host". Документацию по этому поводу можно найти здесь.

Оба они помещают ваш контейнер поверх стеков сети хоста.

person Bill Cheng    schedule 04.04.2017