0

簡単fig upに言うと、2 つのコンテナーを適切にリンクしない場合docker runです。

シナリオ:

2 つのコンテナーがあります。1 つは Cassandra を含み、もう 1 つはクライアント サービスを含みます。コンテナが起動すると、クライアントはcassandrahosts ファイルにホスト名があり、9042 ポートに到達できることを期待します。

タイトなコンテナーへのドッカーのリンクを一緒に使用します。ここにあるfig.yml

cassandra:
  image: "myrepo/cassandra"
  ports:
    - "7199:7199"
    - "9042:9042"
    - "9160:9160"
    - "61621:61621"
    - "2222:22"
  hostname: cassandra

client:
  image: myrepo/client
  links:
    - cassandra
  ports:
    - "8098:8098"
    - "8099:8099"
  hostname: client

するとfig up client、fig は cassandra を起動しますが、クライアントは cassandra コンテナーに到達できません (ping は実行できますが、9042 ポートには到達できません)。

ただし、cassandra を起動しfig up cassandraて実行すると、次のようになります。

docker run --link tramm_cassandra_1:cassandra --link tramm_cassandra_1:cassandra_1 --link tramm_cassandra_1:tramm_cassandra_1 -p 8098:8098 -p 8099:8099 myrepo/client

その後、クライアントは問題なく cassandra と通信できます。

コンテナーを検査しましたが、出力は次のとおりです。
- cassandra inspect
- fig up client inspect
- docker run client inspect

私が見つけることができる唯一の違いはHostConfig -> DevicesHostConfig -> LxcConfです。fig-up バージョンではnull、docker-run バージョンでは - と同じ[]です。

「ネイティブ」ドッカーシナリオでは機能し、図では機能しない理由とfig upの違いを誰かが説明できますか。docker run

4

1 に答える 1