You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Docker构建完成后我的HBase服务没有正常运行?

问题原因

  • docker-compose.yml中配置的command字段会覆盖Dockerfile中定义的CMD指令:你配置的command: tail -F /dev/null让容器启动后只执行了tail命令,完全没有运行HBase的启动脚本,自然不会有HBase进程。
  • 就算去掉command配置,默认的/opt/hbase-1.2.0/bin/start-hbase.sh是后台守护进程启动模式,脚本执行完成后就会退出,Docker容器PID1进程退出后容器会直接终止,HBase就算启动成功也会随着容器退出而停止。

修复方案

  1. 先修改docker-compose.yml,删除多余的command配置,修改后内容参考:
version: "3"
services:
  hbase:
    build: .
    # 可选:暴露HBase WebUI端口方便访问
    ports:
      - "16010:16010"
  1. 修改Dockerfile的CMD指令,改为前台运行模式避免容器退出:
    将原有的CMD ["/opt/hbase-1.2.0/bin/start-hbase.sh"]替换为以下任意一种即可:
# 直接前台启动HMaster进程
CMD ["/opt/hbase-1.2.0/bin/hbase", "master", "start"]
# 单机模式下先启动所有组件,再阻塞打印日志避免容器退出
CMD /opt/hbase-1.2.0/bin/start-hbase.sh && tail -F /opt/hbase-1.2.0/logs/*.log
  1. 可选检查项:确认hbase-site.xml配置适配单机运行模式,避免启动失败,核心配置参考:
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///var/opt/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/var/opt/zookeeper</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>
</configuration>

修改完成后执行docker-compose up --build重新构建启动容器,进入容器执行jps即可看到运行中的HMaster进程。

内容的提问来源于stack exchange,提问作者Omegaspard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:54:09