2017-02-23 3 views
0

新しい機能 'networking'がリリースされたため、Dockerの 'link'機能は廃止されます(link)。私はドッカーをいくつかのコンテナで作っていますが、他のコマンドを使わずに、それぞれを接続するための 'リンク'は問題ありませんでした。Docker-composeネットワークリンク

私はネットワークへのリンク設定を変更する必要があるので、ドッキングする前にドッカーネットワークを作成する必要があります。ドッカーネットワークを自動的に作ってくれるドッカーの作成機能はありますか?または、各コンテナをいくつかの設定で接続する他の方法はありますか?

答えて

1

デフォルトでは、v2 ymlでドッキングすると、プロジェクトのネットワークがスピンアップします。あなたが定義したネットワークは、明示的に指示しない限り作成されます。ここでは例のドッキングウィンドウ-compose.ymlです:

version: '2' 

networks: 
    dbnet: 
    appnet: 

services: 
    db: 
    image: busybox 
    command: tail -f /dev/null 
    networks: 
    - dbnet 

    app: 
    image: busybox 
    command: tail -f /dev/null 
    networks: 
    - dbnet 
    - appnet 

    proxy: 
    image: busybox 
    command: tail -f /dev/null 
    ports: 
    - 80 
    networks: 
    - appnet 

そして、あなたがそれをスピンアップするとき、その後、あなたはそれが定義されたネットワークを作成していることがわかります:リンクコンテナはまた、暗黙的に作成したこと

$ docker-compose up -d 
Creating network "test_dbnet" with the default driver 
Creating network "test_appnet" with the default driver 
Creating test_app_1 
Creating test_db_1 
Creating test_proxy_1 

注意あなたのymlのdepends_onをあなたのリンクを削除した後の依存関係に明示的に使うことができます。

+0

これは実際に私が望むものです。ありがとう:) –

3

docker-composeは、作成プロジェクト用のデフォルトネットワークを作成します。作成プロジェクトをversion: '2'またはversion: '3'(compose yamlフォーマット)に移行する必要があります。詳細については、how to upgradeをお読みください。

バージョン2と3では、他のネットワークを明示的に指定しないと、すべてのサービスがデフォルトネットワークになるため、リンクを指定する必要はありません。

UPDATE: 2つのコンテナを互いに話すには、コンテナIPに解決されるサービス名を使用します。何らかの理由でコンテナが特定の名前を予期している場合にのみリンクが必要になります。それはハードコーディングされているからです。

+0

次に、コンテナをコンテナに接続する方法は?私はDBコンテナをtomcatコンテナに接続する必要があります。ドッカーの作成で 'リンク'を使用しますが、これは推奨されなくなりません。 –

+0

私はあなたのコメントからの質問にも答えるように答えを更新しました。この場合、tomcatは単純に "db"を使用できます(dbという名前のサービスがあると仮定します)。 –

関連する問題