В моем docker-compose.yml
файле есть следующее. Однако контейнер не принимает значение имени хоста. Любые идеи?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Когда я проверяю имя хоста в контейнере, оно не улавливается affy
.
docker
docker-compose
Давид Мединец
источник
источник
Ответы:
Начиная с версии 3 docker-compose , вы можете просто использовать
hostname
поле:источник
Кажется, это работает правильно. Если я помещу ваш конфиг в файл:
А затем поднимите вопрос:
А потом проверьте имя хоста внутри контейнера, вроде все в порядке:
источник
hostname
иdomainname
являются допустимымиdocker-compose.yml
вариантами. Обновление: только что протестировано, все еще работает нормально (docker-compose версии 1.4.2, docker версии 1.8.2).Я обнаружил, что имя хоста не было видно другим контейнерам при использовании
docker run
. Оказывается, это известная проблема (возможно, более известная функция), часть обсуждения которой:Правильный способ присвоения имени хоста - с точки зрения сети контейнеров - это определение псевдонима следующим образом:
К сожалению, это все еще не работает
docker run
. Обходной путь - присвоить контейнеру имя:И
alias1
затем его можно будет отправлять из других контейнеров.ОБНОВЛЕНИЕ: как указывает @grilix, вы должны использовать,
docker-compose run --use-aliases
чтобы сделать определенные псевдонимы доступными.источник
--use-aliases
сdocker-compose run
. Это позволит избежатьrun
На основе документации докеров: https://docs.docker.com/compose/compose-file/#/command
Я просто вставляю
hostname: <string>
свой файл docker-compose.Например:
и контейнер lb01 выбирается
at-lb01
как имя хоста.источник
Самый простой способ, который я нашел, - это просто указать имя контейнера в документации
docker-compose.yml
см. Container_name . Это применимо к docker-compose v1 +. Он работает от контейнера к контейнеру, а не от хост-машины к контейнеру.Теперь у вас должна быть возможность получить доступ
affy
из других контейнеров, используя имя контейнера. Мне пришлось сделать это для нескольких серверов redis в среде разработки.ПРИМЕЧАНИЕ Решение работает до тех пор, пока вам не нужно масштабировать. Такие как согласованные отдельные среды разработчика.
источник
Compose 3.7
единственном пути я получил имя хоста службы базы данных видно из другой службы контейнера одного и того же пакета должен был назвать службу в качестве имени хоста. Неhostname:
удалось использовать свойство. Не удалось использовать конструкцию HOSTNAME = окружения.aliases
свойства, как описано вfoz
решении.container_name
иhostname
установил то же значение, чтобы достичь того, что мне нужноМне нужно было раскрутить контейнер freeipa, чтобы иметь рабочий kdc, и мне пришлось дать ему имя хоста, иначе он не будет работать. Что в конечном итоге сработало для меня, так это установка
HOSTNAME
переменной env в compose:Теперь он работает:
источник