2016-03-23 5 views
0

hadoopとhbaseのドッキング用のコンテナを問題なくセットアップしました。私は今、それらをまとめて、docker-composeを使ってシーケンスで実行しようとしています。hadoop + hbaseの設定でドッカーが問題を作成する

version: '2' 
services: 
hadoop: 
    image: hadoop:2.6 
    container_name: hadoop-compose 
    ports: 
    - "50070:50070" 
hbase: 
image: hbase:0.98 
container_name: hbase-compose 
ports: 
- "9000:9000" 
command: bash -c "while ! nc -v -z -w 3 172.17.0.2 50070; do echo waiting for hadoop; sleep 5; done; sh /opt/hbase-server.sh" 
depends_on: 
- hadoop 
links: 
- hadoop 

hadoopが完了した後にhbaseを初期化します。このために、hadoopコンテナにpingを実行する簡単なコマンドを定義し、成功した場合はhbase-serverスクリプトを実行します。

HBaseのコンテナがpingのHadoopのにできない理由を私は理解していないが、その代わり、それは、このエラーに

NCをスロー:172.17.0.2ポート50070(TCP)への接続がタイムアウトしました:操作今進行中の

hockからdockerとping hadoopを使って別々にコンテナを起動すると、大丈夫です。作成ファイルに問題があるのですか、コマンドスクリプトを乱しましたか?

PS:私もthis postを呼びました(Yの前にコンテナXを待つ)

おかげ

答えて

1
  1. お使いのドッキングウィンドウのネットワークの名前がdocket network ls

  2. 点検しているかどうか確認しますあなたのサービスがそこにあることを確認するネットワークdocker network inspect "name of your network"ネットワークの名前は、バージョン2を使用しているので、ドッカー作成ファイルが存在するディレクトリの名前にする必要があります。

  3. サービスが同じネットワークに存在すると仮定して、接続が十分に再試行されていることを確認します。リンクやdepends_onを使うと起動の順序しか制御されませんが、必ずしも1つのアプリケーションが別のアプリケーションが完全に初期化するのを待つわけではありません。 https://docs.docker.com/compose/startup-order/

P.S. Linksを指定する場合、depends_onが必要だとは思わない。 https://docs.docker.com/compose/compose-file/#links

+0

ポイント2は私にとって新しいものです。つまり、私のディレクトリ名と一致するネットワークを作成しなければならないということです。 – Vijay

関連する問題