Intereting Posts

Как назначить имена хостов контейнерам Docker?

Я запускаю Docker в Windows (а не на родную версию, то есть ту, которая работает на виртуальной docker-machine через docker-machine ).

В настоящее время у меня есть сайты доступа, например:

 192.168.99.100:8080 for website 1 192.168.99.100:8081 for website 2 192.168.99.100:8082 for website 3 

Это настоящая боль по очевидным причинам.

Я хочу быть в состоянии сделать это, как я использовал это с Apache Virtual Hosts, где я изменяю файл hosts а затем вместо этого просто набираю что-то вроде: website1.dev .

Как я могу это сделать для контейнеров Docker?

Моим первым решением было просто добавить следующие файлы хостам на мой компьютер Windows следующим образом:

 192.168.99.100 docker.dev 

Однако docker.dev будет пересылать только 192.168.99.100:80 (т. docker.dev Веб-сайт 1) из-за того, что вы не можете размещать порты в файле hosts.

192.168.99.100 – это IP-адрес докер-машины: для присвоения имени этому IP-адресу вам необходимо будет изменить файл хостов Windows самостоятельно.

И это предполагает, что IP-адрес докерной машины VM исправлен: см. Мой сценарий в этом ответе .

Чтобы на самом деле перенаправить на правильный сервер Apache в виртуальной машине, вам понадобится другой контейнер, который будет:

  • прослушивать порт 80 по умолчанию
  • проанализируйте URL-адрес и прокси-пропуск (перенаправление) в правый фактический URL-адрес: порт.

     http://website1.dev => redirect to port 8080 http://website2.dev => redirect to port 8081 http://website3.dev => redirect to port 8082 

website1.dev , website2.dev и website3.dev все добавлены в файл хостов Windows с тем же адресом 192.168.99.100)

Например, проверьте трейфик


Это отличается от имени хоста контейнера, как видно из других контейнеров.

docker-compose extra-host действительно эквивалентен docker run --add-host

Но docker-compose может использовать hostname: напрямую, чтобы исправить имя хоста в контейнере.
Этого должно быть достаточно для ссылки на каждый контейнер по его названию.