バージョン2docker-composeファイル内のコンテナー間のリンクが機能していません。
「古い」バージョン1形式を使用する場合のみ、コンテナの/ etc/hostsにリンクが表示されます。
次の基本バージョン2docker-compose.ymlファイルがあります。
バージョン: '2' サービス: my-app: イメージ:Tomcat:8.0 コンテナー名:my- app1 リンク: -my-redis my-redis: image:redis container_name:my-redis1
次のコマンドを実行すると:
docker-compose up -d
2つのコンテナが起動しているのがわかりますが、/-// hostsファイルにリンクは作成されません:
docker exec -it my-app1 cat/etc/hosts
127.0.0.1 localhost :: 1 localhost ip6-localhost ip6-loopback fe00 :: 0 ip6-localnet ff00 :: 0 ip6-mcastprefix ff02 :: 1 ip6-allnodes ff02 :: 2 ip6-allrouters 172.18.0.3 2abb84ccada9
「my-app1」から、「my-redis1」のIPアドレスを使用して他のコンテナにpingできますが、「名前に基づいて」「my-redis1」にpingできません。
ここで何が問題になるのでしょうか?
追加情報:
問題は、私のFedoraホストのファイアウォールです。
ファイアウォールが一時的に無効になっている(「systemctl stop firewalld」、続いて「systemctl restart docker」)と、すべてがdockerのドキュメントに従って機能します。
Dockerで使用する場合、firewalldに大きな問題があるようです。次を参照してください https://github.com/docker/docker/issues/16137 。
RHEL/Centos 7もfirewalldを使用することに注意してください。
-アルジェン
Docker-composeのバージョン2では、同じネットワーク内にある「サービス」(コンテナー)がデフォルトでそれらの間でリンクされます。
以下のdocker-compose.ymlファイルを使用する
version: '2'
services:
my-app:
image: Tomcat:8.0
container_name: my-app1
links:
- my-redis
my-redis:
image: redis
container_name: my-redis1
あなただけを実行することができますping my-app
からmy-redis
コンテナとping my-redis
からmy-app
コンテナがリンクされていることを確認します。
例えば:
$ docker-compose up -d
$ docker exec -it my-app1 bash
# ping my-redis
詳細については、以下のリンクをご覧ください。 https://blog.docker.com/2016/02/compose-1-6/https://github.com /docker/compose/blob/master/docs/networking.md
私の場合、問題はサービス名にありました。
version: "2"
services:
my_auth_server:
build: auth-server
ports:
- "8082:8082"
my_api:
build: core-api
ports:
- "8081:8081"
links:
- my_auth_server:auth-server # <-- here changed from auth_server to auth-server