5

同じホストで実行されている異なる docker-compose プロジェクトに属するコンテナーを相互接続する方法を理解するのに苦労しています。

たとえば、 Deployment Aに一連のコンテナーがあるとします。

root@debussy:~# docker ps | awk '{print $2}' | grep "cl"
cl-worker:latest
cl-nginx:latest
cl-app:latest
cl-rabbitmq:latest
cl-memcached:latest
cl-db:latest

これらのコンテナはすべて、別の構成ファイルから起動されましたdeployment-a.yml。ここで、独自の `deployment-b.yml を持つ別のDeployment Bもあります。

root@debussy:~# docker ps | awk '{print $2}' | grep "stockagents"
stockagents-app:latest

および/またはの特定の構成によって、データベース(cl-dbコンテナー)にアクセスすることは可能ですか?stockagents-appdeployment-b.ymldeployment-a.yml

注:docker純粋なコマンドを使用してコンテナをリンクする方法は知っていますが、とその構成ファイル--linkのみを使用して同じ動作を実現する方法はあり ますか?docker-compose

4

2 に答える 2

2

の最近のバージョンdocker-compose(少なくとも 1.5​​.2)では、現在の構成の外で開始されたコンテナーを指定できるファイルの「external_links」オプションがサポートされているようです。docker-compose.yml

これはまさに、別々のデプロイメントのコンテナー間で共通のサービス (MySQL など) を共有しようとするときに探していた機能です。

于 2015-12-22T16:44:59.993 に答える
0

あなたの要求は、docker-compose の機会を超えているようです。オーケストレーション ツールをいじる必要があります (多かれ少なかれ複雑です)。私たちもUbuntuを使用しており、私たちの環境ではSkyDNS+SkyDockは優れたシンプルなソリューションのようです(もちろんetcd必要ありません)。デプロイには 3 つのステップが含まれます。必要なのは、イメージをプルし、docker デーモンを再構成してSkyDNSSkyDock. ロシア語に精通している場合は、ここで優れた導入ガイドを見つけることができます。

このソリューションの主な利点は、Docker 環境内で利用できる新しい DNS ゾーンです。コンテナーは名前で相互に呼び出すことができます。しかし、 には逆ルックアップがないため、SkyDNSホスト名を明示的に渡す必要があります。

 web:
  image: django
  hostname: web.django.dev.skydns.local
  build: ./webapp
  ports:
    - "8000:8000"
  environment:
    - DEBUG=true
    - SEND_EMAILS=false

このようにして、コンテナはweb.django.dev.skydns.local任意のコンテナ内から名前で利用できるようになります。

于 2015-04-17T22:24:59.100 に答える