Как можно настроить имя, которое будет иметь служба docker-compose в dockerd dns (для удаления подчеркиваний)? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть служба с именем my_service, которая разрешается другими контейнерами в общих сетях с тем же именем, что и определение службы: my_service.Я не фанат подчеркиваний в именах хостов или доменов, так как они не принимаются и не поддерживаются широко.

Я бы хотел изменить имя в DNS dockerd, чтобы оно было доступно через "my-service", надеюсь, не меняя имя службы в файле compose.

version: "2"
services:
  my_service:
    image: foo
    hostname: my-service
  networks:
    - "default"
    - "othernet"
...
networks:
  othernet:
    driver: bridge

Я пробовал параметр compose hostname: my-service, который добавляется к ключу Config.Hostname контейнера.Но ключ не используется для разрешения имен из других контейнеров.

Кроме того, это дополнительная проблема, но составление последовательных искажений имен по разным причинам (для удовлетворения сетевого моста linux)имена, имена контейнеров, сетевые имена, имена томов и т. д.) Я не сразу понимаю, почему удаление подчеркиваний из имен DNS было бы слишком далеко.

1 Ответ

0 голосов
/ 24 ноября 2018

Псевдонимы сети - один из способов сделать это.Для каждой сети, для которой вы хотите изменить имя контейнера, вы должны предоставить список альтернативных имен для него.

Таким образом, ваше определение службы будет иметь вид:

services:
  my_service:
    image: foo
    hostname: my-service
    ...
    networks:
      default:
        aliases:
           - my-service
           - my-srv
      othernet:
        aliases:
           - my-service

# the global `networks` section at the bottom doesn't need to be touched.
...

Примечание 1: Вам не нужно добавлять псевдонимы в каждой сети, в которой находится контейнер.Опустите ключ псевдонимов для этого раздела, если вам не нужны никакие дополнительные имена.

Примечание 2: Раздел псевдонимов добавит новых имен, но не будетудалить все существующие сопоставления по умолчанию.Таким образом, контейнер будет также по-прежнему доступен в my_service после добавления еще aliases.

Если вы сделаете docker inspect <containerid>, вы сможете увидеть другие псевдонимы для контейнерав каждой сети.По умолчанию dockerd добавит краткую форму containerid, например afe2314, в пакет псевдонимов.

...