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

Red Hat Fuse 7容器执行client命令触发除零错误求助

解决Red Hat Fuse 7 Docker容器中Client的/ by Zero错误

问题分析

从你提供的错误日志来看,这个/ by zero异常来自org.aesh.readline.Buffer.printInsertedData方法,本质是终端尺寸获取失败导致的计算错误。因为你使用的openjdk:8-slim是精简版镜像,缺少了终端环境必需的依赖库,导致Fuse的Karaf客户端无法正确获取终端的列宽/行高,进而触发除零异常。

解决方案

方案1:补充镜像的终端依赖库(推荐)

修改你的Dockerfile,添加终端相关依赖包,确保容器内可以正确识别终端环境:

FROM openjdk:8-slim
MAINTAINER Jayashankar C <jshankarc1@gmail.com>

# 添加终端依赖库
RUN apt-get update && apt-get install -y --no-install-recommends ncurses-base libtinfo5 \
    && rm -rf /var/lib/apt/lists/*

ENV KARAF_USER karaf
ENV KARAF_UID 8181
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV JAVA_MAX_MEM 256m
ENV KARAF_EXEC exec

COPY fuse-karaf-7.0.0.fuse-000191-redhat-1.zip /tmp/fuse-karaf.zip
COPY org.ops4j.pax.url.mvn.cfg /tmp
COPY users.properties /tmp

RUN groupadd -r $KARAF_USER --gid=$KARAF_UID && useradd -rm -g $KARAF_USER --uid=$KARAF_UID $KARAF_USER
RUN mkdir -p /opt/karaf \
    && unzip -o /tmp/fuse-karaf.zip -d /opt/karaf \
    && mv /opt/karaf/fuse-karaf-7.0.0.fuse-000191-redhat-1/* /opt/karaf > /dev/null 2>&1 \
    && ls /opt/karaf -ltr \
    && rm /tmp/fuse-karaf.zip \
    && cp -f /tmp/org.ops4j.pax.url.mvn.cfg /opt/karaf/etc \
    && cp -f /tmp/users.properties /opt/karaf/etc \
    && cat /opt/karaf/etc/org.ops4j.pax.url.mvn.cfg \
    && mkdir -p /opt/karaf/data /opt/karaf/data/log \
    && chown -R $KARAF_USER.$KARAF_USER /opt/karaf \
    && chmod 700 /opt/karaf/data

EXPOSE 1099 8101 44444
USER $KARAF_USER
CMD ["/opt/karaf/bin/karaf", "run"]

重新构建镜像并启动容器后,终端环境就能正常识别,客户端按键异常的问题会消失。

方案2:临时强制设置终端尺寸(无需修改镜像)

如果不想重新构建镜像,可以在执行客户端命令前手动指定终端的行和列:

# 先进入容器的bash环境,设置终端尺寸后启动client
docker exec -it fuse bash
stty rows 24 cols 80
/opt/karaf/bin/client

或者直接用一条命令完成:

docker exec -it fuse sh -c "stty rows 24 cols 80 && /opt/karaf/bin/client"

方案3:传递终端环境变量启动容器

启动容器时指定TERM环境变量,帮助容器识别终端类型:

docker run --name fuse -d -p 1099:1099 -p 8101:8101 -p 44444:44444 -e TERM=xterm-256color redhat-fuse-v1

之后再执行docker exec -it fuse /opt/karaf/bin/client即可正常使用客户端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:08:07