Intereting Posts
развертывать контейнеры в кластере swarm с использованием файла компоновки без использования докерной машины Сброс соединения: настройте Oracle SSL в докере Какая польза от конвоя-glusterfs над чистым glusterfs Force Docker для установки объема кода в хосте, а не в гостевом перенастроить часовой пояс внутри докера ecs-cli создает обслуживание не заканчивается Запуск докеров в качестве пользователя без полномочий root или запуск jenkins на tomcat в качестве пользователя root Как правильно использовать файл докета centos с хостом ubuntu? редактировать файлы контейнера докеров с OS X Sublime Text Ограничение размера тонера докеров на BlueMix Каково взаимодействие между CpuShares Docker между контейнерами? API-интерфейс API-интерфейса docker не работает Как я могу отлаживать докеры на Mac, используя докер-машину? сборка докеров и публикация использования плагинов Maven build и maven-failafe-plugin – разветвленная виртуальная машина завершена без надлежащего прощания

Как назначить имена хостов контейнерам 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: напрямую, чтобы исправить имя хоста в контейнере.
Этого должно быть достаточно для ссылки на каждый контейнер по его названию.