2016-03-21 5 views
8

私のプロジェクトの開発環境を設定しようとしています。ドッカーのホストネットワークと追加のネットワークを使用してください

自分のネットワーク(私の場合は「サービス」)に入れるべきコンテナ(ms1)と、httpポートをホストのネットワークに公開しながらそのネットワークにアクセスするコンテナ(apigateway)があります。

理想的には私のドッキングウィンドウのコンファイルには、次のようになります。

version: '2' 
services: 
    ms1: 
     expose: 
      - "13010" 
     networks: 
      services: 
       aliases: 
        - ms1 
    apigateway: 
     networks: 
      services: 
       aliases: 
        - api 
     network_mode: "host" 
networks: 
    services: 

ドッキングウィンドウ-コンが同時にnetwork_modeとネットワークを使用することはできません。

他の方法がありますか?

apigateway: 
     networks: 
      services: 
       aliases: 
        - api 
     ports: 
      - "127.0.0.1:10000:13010" 

、その後apigatewayコンテナが0.0.0.0:13010でリッスン:私はこれを使用している時点では

。それは動作しますが、速度が遅く、ホストのインターネット接続がダウンするとフリーズします。

また、私は将来、ドッカーに迷惑メールを使用することを計画していますが、クリーンな方法で解決することはできますか?

+0

apigatewayからms1のIPアドレスを使用できますか? https:// stackoverflowを参照してください。com/questions/27937185/assign-static-ip-to-docker-containerドッカーとのやり方1.10.1 –

+0

私は同じことをしようとしていますが、別の問題を解決するために(多分)。私の場合、私は2つのサービス間で共有されたネットワークを作成しましたが、何らかの理由でサービスの1つがインターネットに接続されていませんでした(私はホストネットワークの一部ではないと考えました)。しかし、DNSに到達できないためURLを解決できないという問題がありました。 IPアドレスを使用したクイックフィックスを行いましたが、要求を正しいDNSに転送するために徹底的に調べます。 – omrsin

答えて

0

私はこれしようとするだろう:あなたがにサービスを作成することができるはずドッキングウィンドウ1.13で

1 /ホストネットワークを探す docker network ls

2 /このdockercomposeファイルを使用

 services: 
      ms1: 
       ports: 
        - "13010" 
       networks: 
        - service 
      apigateway: 
       networks: 
        - front 
        - service 

     networks: 
      front: 
      service: 
       external: 
        name: "<ID of the network>" 
+0

上記のコマンドを使用してホストネットワークを作成しようとすると、このエラーが表示されます。 'デーモンからのエラー応答:"ホスト "ネットワークの1つのインスタンスのみが許可されます。 – disrvptor

+0

既に存在するものを使用できます。私は自分の答えを更新しましたが、私はそれをテストする能力がありません。 – Plup

0

を2つのネットワーク間のブリッジ。私はanother problemを修正するために同様のものを使用していると私は、これはまた、ここに助けることができると思う:中

docker service create \ 
--name proxy \ 
--network proxy \ 
--publish mode=host,target=80,published=80 \ 
--publish mode=host,target=443,published=443 \ 
--constraint 'node.hostname == myproxynode' \ 
--replicas 1 \ 
letsnginx 
0

exposedoes not publish the port on the hostをドッキングウィンドウで、構成します。おそらくサービスリンクはもう必要ないでしょう(既にDockerネットワークに依存しているのではなく)。オプションは一般的に価値が限られており、シナリオでは価値がないようです。

私はあなたが誤ってそれを使用してに来ているし、それ自体がどんな効果を持っていないようでしたことを認識した後、ホストネットワークドライバを使用すると、「それを動作させる」という事実につまずいた。容疑者これはexposeプロパティとは関係ありません。ホスト・ネットワーク・ドライバが、含まれているプロセスをホスト・ネットワーク・インタフェースに直接バインドできるようにするだけです。これにより、外部からAPIゲートウェイプロセスにアクセスできます。 exposeプロパティを削除しても問題は解決しません。

これはあなたがホストネットワークドライバを選んだ唯一の理由である場合は、X-Y problemの犠牲者を落ちたんだ:

(TL; DR) あなたは、ホスト、ネットワークドライバを使用する必要はありません通常の状況では、デフォルトのブリッジネットワークドライバはうまく動作します。あなたが探しているのは、ではなくportsのプロパティです。これは、舞台裏で適切なポート転送を設定します。

関連する問題