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

运行Docker容器时遭遇api_db_1退出码255问题求助

解决Docker中DB2容器因SAMPLE数据库已存在导致退出码255的问题

从你的日志里能明确看到核心故障点:

SQL1005N The database alias "SAMPLE" already exists in either the local database directory or system database directory.

容器启动时的脚本尝试创建SAMPLE数据库,但该数据库已经在持久化的数据卷中存在,最终导致容器以退出码255终止。下面给你几个实用的解决办法:

  • 清理DB2数据卷,重新初始化容器
    如果你不需要保留现有的SAMPLE数据库,这是最直接的方案:

    # 停止并移除当前运行的容器
    docker-compose down
    # 删除关联的DB2数据卷(注意:这会清除所有数据库数据,请确认后操作)
    docker volume rm api_db_data  # 替换成你compose配置中实际的卷名称
    # 重新启动容器,让它重新初始化数据库
    docker-compose up -d
    
  • 修改启动逻辑,添加-force参数强制覆盖
    容器启动时调用的db2sampl命令支持-force参数,能强制覆盖已存在的数据库。你可以调整docker-compose配置:
    在docker-compose.yml的db服务中修改command字段:

    services:
      db:
        # 你的镜像、端口等其他配置...
        command: sh -c "db2sampl -force && start-0.3"
    

    这样容器启动时会先强制处理SAMPLE数据库,再执行原来的启动命令。

  • 手动进入容器处理已存在的数据库
    如果需要保留现有数据,只是想让容器正常启动,可以通过交互模式进入容器手动处理:

    # 临时启动容器的交互模式,跳过默认启动脚本
    docker run -it --entrypoint bash <你的DB2镜像名称>
    # 切换到DB2管理员用户
    su - db2inst1
    # 查看当前已存在的数据库
    db2 list database directory
    # 若不需要SAMPLE数据库,直接删除
    db2 drop database SAMPLE
    # 退出容器后,重新用compose启动服务
    exit
    docker-compose up -d
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:37