docker问题与Hadoop + hbase设置

我为hadoop和hbase设置了Docker容器,没有问题。 我现在试图把它们放在一起,并使用docker-compose按顺序运行它们。

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:我也提到这个post (在Y之前等待容器X)

谢谢

  1. 检查您的dockernetworking的名称是与docket network ls

  2. 检查networking以validation您的服务是否在docker network inspect "name of your network"的名称应该是自版本2以来docker-compose文件所在目录的名称。

  3. 假设您的服务存在于同一个networking中,请确保它们充分重试它们的连接。 使用链接或depends_on只控制启动的顺序,但不一定意味着一个应用程序将等待另一个完全初始化。 https://docs.docker.com/compose/startup-order/

PS我不相信你需要depends_on如果你指定链接。 https://docs.docker.com/compose/compose-file/#links