2016-03-23 77 views
0

我已經爲hadoop和hbase設置了docker容器,沒有問題。我現在試圖將它們放在一起並使用docker-compose按順序運行它們。docker-compose issue with hadoop + hbase setup

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 

我希望hbase在hadoop完成後初始化。爲此,我定義了一個簡單的命令來ping Hadoop容器,如果成功,就繼續運行hbase-server腳本。

我不明白爲什麼HBase的容器不能ping通Hadoop的,而不是它拋出這個錯誤

NC:連接到172.17.0.2端口50070(TCP)超時:正在進行操作

如果我使用Docker分別啓動容器並從hbase ping Hadoop,它連接好。撰寫文件是否存在問題,或者是否弄亂了命令腳本?

PS:我也提到this post(等待在y之前集裝箱X)

感謝

回答

1
  1. 檢查你的泊塢窗網絡的名稱是一個docket network ls

  2. 檢查該網絡來驗證您的服務是否在docker network inspect "name of your network"網絡的名稱應該是docker-compose文件因使用版本2而存在的目錄的名稱。

  3. 假設您的服務存在於同一個網絡中,請確保它們充分重試它們的連接。使用鏈接或depends_on僅控制啓動順序,但並不一定意味着一個應用程序會等待另一個完全初始化。 https://docs.docker.com/compose/startup-order/

P.S.如果你指定Links,我不相信你需要depends_on。 https://docs.docker.com/compose/compose-file/#links

+0

第2點對我來說是新的,這意味着我必須創建一個匹配我的目錄名稱的網絡 - 讓我給它一個鏡頭 – Vijay