web-dev-qa-db-ja.com

Docker Composeでホスト名を設定するにはどうすればよいですか?

Docker-compose.ymlファイルには、次のものがあります。ただし、コンテナはホスト名の値を取得しません。何か案は?

dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock
74
David Medinets

docker runを使用しているときに、ホスト名が他のコンテナーから見えないことがわかりました。これは 既知の問題 (おそらく既知の機能)であることが判明しました。

ホスト名の使用に関する警告をドキュメントに追加する必要があります。それはめったに役に立たないと思います。

ホスト名を割り当てる正しい方法-コンテナネットワーキングの観点から-は、 define a alias のようになります:

services:
  some-service:
    networks:
      some-network:
        aliases:
          - alias1
          - alias2

残念ながら、このstilldocker runでは機能しません。回避策は、コンテナに名前を割り当てることです。

docker-compose run --name alias1 some-service

そして、alias1は他のコンテナからpingできます。

21
foz

これは正常に動作するようです。あなたの設定をファイルに入れた場合:

$ 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
41
larsks

ドッカーのドキュメントに基づいています: https://docs.docker.com/compose/compose-file/#/command

単にdocker-composeファイルにhostname: <string>を配置します。

例えば。:

[...]

lb01:
  hostname: at-lb01
  image: at-client-base:v1

[...]

コンテナlb01はat-lb01をホスト名として取得します。

26
Marcello Romani

Kdcを機能させるには freeipa container をスピンする必要があり、実行しない場合はホスト名を指定する必要がありました。最終的に私にとってうまくいったのは、composeでHOSTNAME env変数を設定することです:

version: 2
services:
  freeipa:
    environment:
      - HOSTNAME=ipa.example.test

動作するようになりました:

docker exec -it freeipa_freeipa_1 hostname
ipa.example.test
3
Roy Golan

私が見つけた最も簡単な方法は、docker-compose.ymlでコンテナ名を設定することです。 container_name ドキュメントを参照してください。 docker-compose v1 +に適用できます。ホストマシンからコンテナではなく、コンテナからコンテナに対して機能します。

services:
  dns:
    image: phensley/docker-dns
    container_name: affy

これで、コンテナ名を使用して他のコンテナからaffyにアクセスできるはずです。開発環境で複数のredisサーバーに対してこれを行う必要がありました。

NOTEこのソリューションは、スケーリングする必要がない限り機能します。一貫した個々の開発者環境など。

1
K.J.