В моем файле docker-compose.yml у меня есть следующее. Однако контейнер не получает значение имени хоста. Любые идеи?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
В моем файле docker-compose.yml у меня есть следующее. Однако контейнер не получает значение имени хоста. Любые идеи?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Я обнаружил, что имя хоста не было видно другим контейнерам при использовании docker run
. Это оказывается известной проблемой (возможно, более известной особенностью), с частью обсуждения:
Возможно, нам следует добавить предупреждение в документы об использовании имени хоста. Я думаю, что это редко полезно.
Правильный способ присвоения имени хоста - с точки зрения контейнерных сетей - это определить псевдоним следующим образом:
services:
some-service:
networks:
some-network:
aliases:
- alias1
- alias2
К сожалению, это все еще не работает с docker run
. Обходной путь должен назначить контейнеру имя:
docker-compose run --name alias1 some-service
И alias1
может затем alias1
из других контейнеров.
Кажется, это работает правильно. Если я поместил вашу конфигурацию в файл:
$ cat > compose.yml <<EOF
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
EOF
И затем поднимите вещи:
$ docker-compose -f compose.yml up
Creating tmp_dns_1...
Attaching to tmp_dns_1
dns_1 | 2015-04-28T17:47:45.423387 [dockerdns] table.add tmp_dns_1.docker -> 172.17.0.5
И затем проверьте имя хоста внутри контейнера, все выглядит нормально:
$ docker exec -it stack_dns_1 hostname
affy.affy.com
Основано на документации докера: https://docs.docker.com/compose/compose-file/#/command.
Я просто помещаю hostname: <string>
в мой файл docker-compose.
Например:
[...]
lb01:
hostname: at-lb01
image: at-client-base:v1
[...]
и контейнер lb01 выбирает at-lb01
как имя хоста.
Мне нужно было закрутить контейнер freeipa, чтобы иметь работающий kdc, и я должен был дать ему имя хоста, иначе он не запустится. В конечном итоге у меня HOSTNAME
установить переменную HOSTNAME
env в compose:
version: 2
services:
freeipa:
environment:
- HOSTNAME=ipa.example.test
Теперь это работает:
docker exec -it freeipa_freeipa_1 hostname
ipa.example.test
Самый простой способ, который я нашел, - это просто установить имя контейнера в docker-compose.yml
См. Документацию по container_name. Это применимо к docker-compose v1+. Он работает для контейнера в контейнер, а не от хоста к контейнеру.
services:
dns:
image: phensley/docker-dns
container_name: affy
Теперь вы сможете получить доступ к affy
из других контейнеров, используя имя контейнера. Я должен был сделать это для нескольких серверов Redis в среде разработки.
ПРИМЕЧАНИЕ Решение работает до тех пор, пока вам не нужно масштабировать. Такие как согласованные индивидуальные среды разработки.
Я пробовал все это, и ни один из них не работал.
Я использую Ubuntu 18.04 LTS. Докер и все в актуальном состоянии на сегодня 26.04.199.
Я попытался вставить имя хоста: имя_сервера, а также параметры псевдонима в нескольких местах в разделе "samba" файла compose. В большинстве случаев опция псевдонима выдает ошибку, и я не могу запустить резервный контейнер samba, в других он запускается, но я до сих пор не могу получить доступ/найти имя сервера. Это раздражает, потому что это проблема безопасности для доступа/монтирования общих ресурсов по IP для меня, а также некоторые вещи просто не любят смотреть на диск, смонтированный на IP-адресе. Ниже приведен фрагмент моего файла. К вашему сведению, это не настоящие имена пользователей; пароли;)
24 samba:
25 image: dperson/samba
26 environment:
27 TZ: 'EST5EDT'
28 networks:
29 - default
30 ports:
31 - "137:137/udp"
32 - "138:138/udp"
33 - "139:139/tcp"
34 - "445:445/tcp"
35 read_only: true
36 tmpfs:
37 - /tmp
38 restart: unless-stopped
39 stdin_open: true
40 tty: true
41 volumes:
42 - /media/files:/media/files:z
43 - /media/media:/media/media:z
44 command: '-u "user;pswd;1000" -u "readonly;pswd" -s "files;/media/files;yes;yes;no;all;joel;joel"
45
46 networks:
47 default: