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

使用Docker持久化卷启动YugabyteDB时出现Socket绑定错误

解决Docker中YugabyteDB复用持久化卷启动失败的问题

问题原因

首次启动容器时,YugabyteDB会把当前容器的IP(示例中的172.28.0.3)写入持久化卷内的配置文件或元数据中。重新创建容器时,Docker默认会分配新的IP地址,此时YugabyteDB仍尝试绑定旧IP的7100端口,导致出现Cannot assign requested address (system error 99)的绑定失败错误。

解决方案

方案1:清理持久化卷中的旧IP配置

  • 停止并删除故障容器:
docker stop yugabytedb && docker rm yugabytedb
  • 定位持久化卷的挂载路径(以named volume为例):
docker volume inspect yb-data | grep Mountpoint
  • 进入挂载路径,删除master节点的元数据文件(这些文件保存了旧IP信息):
rm -rf /path/to/mountpoint/yb-data/master/*
  • 重新启动容器,YugabyteDB会根据新容器的IP重新生成配置。

方案2:启动时强制监听所有地址

启动容器时添加参数,让YugabyteDB监听容器内所有可用IP,避免绑定固定旧IP:

docker run -d --name yugabytedb -v yb-data:/yb-data yugabytedb/yugabyte:latest \
  yugabyted start --daemon=false \
  --master-rpc-bind-addresses 0.0.0.0:7100 \
  --tserver-rpc-bind-addresses 0.0.0.0:9100 \
  --listen 0.0.0.0

方案3:给容器分配固定IP

创建自定义Docker网络并指定固定IP,确保容器重启后IP不变:

  • 创建自定义网络:
docker network create --subnet=172.28.0.0/16 yb-network
  • 使用固定IP启动容器:
docker run -d --name yugabytedb --net yb-network --ip 172.28.0.3 -v yb-data:/yb-data \
  yugabytedb/yugabyte:latest yugabyted start --daemon=false

错误日志参考

./../src/yb/master/master_main.cc:131] Network error (yb/util/net/socket.cc:325): Error binding socket to 172.28.0.3:7100: Cannot assign requested address (system error 99)
    @       0x2938618  google::LogMessage::SendToLog()
    @       0x29394d3  google::LogMessage::Flush()
    @       0x29399cf  google::LogMessageFatal::~LogMessageFatal()
    @       0x2677cde  main
    @   0x7fb112f46825  __libc_start_main
    @       0x260802e  _start 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:11:07