私のdocker-compose.ymlファイルには、以下があります。ただし、コンテナはホスト名の値を取得しません。何か案は?
dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock
コンテナのホスト名を確認しても、ピックアップされませんaffy。
私のdocker-compose.ymlファイルには、以下があります。ただし、コンテナはホスト名の値を取得しません。何か案は?
dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock
コンテナのホスト名を確認しても、ピックアップされませんaffy。
回答:
以下のようドッカ-コンバージョン3、あなただけ使用することができますhostnameフィールド:
version: '3'
services:
  dns:
    hostname: 'your-name'
              これは正常に動作するようです。私があなたの設定をファイルに入れたら:
$ 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
              hostnameとdomainname有効なdocker-compose.ymlオプション。更新:テスト済みですが、問題なく動作するようです(docker-composeバージョン1.4.2、dockerバージョン1.8.2)。
                    を使用すると、ホスト名が他のコンテナから見えないことがわかりましたdocker run。これは既知の問題(おそらくより既知の機能)であることが判明しました。
おそらく、ホスト名の使用に関する警告をドキュメントに追加する必要があります。めったに役に立たないと思います。
ホスト名を割り当てる正しい方法-コンテナネットワークの観点から-のようにエイリアスを定義することです:
services:
  some-service:
    networks:
      some-network:
        aliases:
          - alias1
          - alias2
残念ながら、これはまだ動作しませんdocker run。回避策は、コンテナに名前を割り当てることです。
docker-compose run --name alias1 some-service
そして、alias1その後、他のコンテナからpingすることができます。
--use-aliasesましたdocker-compose run。これにより、runコマンドのエイリアスのハードコーディングが回避されます
                    Dockerドキュメントに基づく:https : //docs.docker.com/compose/compose-file/#/command
私は単にhostname: <string>
docker-composeファイルに入れ
 ます。
例えば:
[...]
lb01:
  hostname: at-lb01
  image: at-client-base:v1
[...]
コンテナlb01はat-lb01ホスト名としてピックアップします。
私が見つけた最も簡単な方法は、docker-compose.yml「container_name」のドキュメントでコンテナ名を設定することです。docker-compose v1 +に適用できます。ホストマシンからコンテナではなく、コンテナからコンテナに対して機能します。
services:
  dns:
    image: phensley/docker-dns
    container_name: affy
これでaffy、コンテナー名を使用して他のコンテナーからアクセスできるようになります。開発環境の複数のredisサーバーに対してこれを行う必要がありました。
注このソリューションは、スケーリングする必要がない限り機能します。一貫性のある個々の開発者環境など。
Compose 3.7唯一の方法私は、同じスタックの他のサービスコンテナ内から見られるように、データベース・サービスのホスト名がホスト名としてサービスに名前を付けることでしました。hostname:プロパティの使用に失敗しました。環境HOSTNAME =構成の使用も失敗しました。
                    aliasesは、fozソリューションで説明されているプロパティを使用することでした。
                    container_nameとhostname私は必要なものを達成するために同じ値に
                    kdcを機能させるにはfreeipaコンテナーをスピンする必要があり、ホスト名を指定する必要がありました。そうしないと実行できませんでした。最終的に私にとってうまくいったのは、環境HOSTNAME変数をcomposeに設定することです:
version: 2
services:
  freeipa:
    environment:
      - HOSTNAME=ipa.example.test
今その働き:
docker exec -it freeipa_freeipa_1 hostname
ipa.example.test