私の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