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

基于Alpine Docker部署Moshell工具的配置修改与问题排查

问题说明

已在Ubuntu环境完成Moshell工具部署,现需替换为基于Alpine Linux的Dockerfile,实现Moshell无报错安装。

新创建的Alpine版Dockerfile

FROM alpine:3.13

# 安装工具与依赖
RUN apk update && apk upgrade && apk add --no-cache curl file vim python3 net-tools openssh zip openjdk11-jre perl bash shadow

# 从主机获取组ID和组名
ARG GROUP_ID 
ARG GROUP_NAME

# 复制安装文件到容器
COPY moshell* /.mosh_inst/

# 安装Moshell(完整安装,默认选项)
RUN ["/bin/bash", "-c", "echo -e \"0\n/opt\n\n\n\n\" | bash /.mosh_inst/moshell_install"]

# 创建与主机同名的用户组
RUN addgroup -g ${GROUP_ID} ${GROUP_NAME}
WORKDIR / 
EXPOSE 25 9002-9999 10000-11000 11881

原Ubuntu版Dockerfile

FROM ubuntu:18.04

# 安装工具与依赖
RUN apt-get update && apt-get upgrade -y && apt-get install -y curl file vim python3 net-tools ssh zip openjdk-11-jre-headless

# 从主机获取组ID和组名
ARG GROUP_ID
ARG GROUP_NAME

# 复制安装文件到容器
COPY moshell* /.mosh_inst/
WORKDIR /.mosh_inst

# 安装Moshell(完整安装,默认选项)
RUN ["/bin/bash","moshell_install","-p","moshelldir=/opt,java=java,perl=/bin/perl"]

# 创建与主机同名的用户组
RUN addgroup --gid ${GROUP_ID} ${GROUP_NAME}

WORKDIR /

EXPOSE 25
EXPOSE 9002:9999
EXPOSE 10000:11000
EXPOSE 11881

构建时的报错信息

docker build -t moshell24.0b_image /home/egajash/moshell24.0b/moshell/examples/docker/ 
WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load 

[+] Building 30.1s (3/3) FINISHED 
=> [internal] load build definition from Dockerfile 0.0s 

=> => transferring dockerfile: 723B 0.0s 

=> ERROR [internal] load metadata for docker.io/library/alpine:3.13 30.0s 

=> [auth] library/alpine:pull token for registry-1.docker.io 0.0s

[internal] load metadata for docker.io/library/alpine:3.13:

Dockerfile:2
1 | # Base image is Alpine Linux 
2 | >>> FROM alpine:3.13 
3 | 
4 | # Install tools and dependencies

ERROR: failed to solve: alpine:3.13: failed to authorize: failed to fetch oauth token: Post "https://auth.docker.io/token": dial tcp [2600:1f18:2148:bc01:571f:e759:a87a:2961]:443: connect: connection refused 

报错分析与修复方案

1. 网络连接问题

报错核心是主机无法连接Docker Hub的认证服务器,导致拉取Alpine 3.13镜像失败:

  • 检查主机网络,确保能正常访问https://auth.docker.io和https://registry-1.docker.io
  • 若使用代理,在Dockerfile开头添加代理配置:
    ENV HTTP_PROXY=http://你的代理地址:端口
    ENV HTTPS_PROXY=http://你的代理地址:端口
    ENV NO_PROXY=localhost,127.0.0.1
    
  • 切换国内镜像源,替换基础镜像:
    FROM registry.cn-hangzhou.aliyuncs.com/google_containers/alpine:3.13
    

2. Alpine Dockerfile语法与逻辑问题

  • 引号转义错误:原安装命令未正确转义双引号,已修正为echo -e \"0\n/opt\n\n\n\n\"
  • 命令行拆分:原Dockerfile中WORKDIR / EXPOSE ...合并在一行,需拆分为两行
  • 用户创建不完整:仅创建了用户组,需补充用户创建逻辑(需新增USER_ID和USER_NAME参数):
    ARG USER_ID
    ARG USER_NAME
    RUN adduser -u ${USER_ID} -G ${GROUP_NAME} -D ${USER_NAME}
    
  • 安装命令优化:参考Ubuntu版的参数化安装方式,避免交互输入,更稳定:
    WORKDIR /.mosh_inst
    RUN ["/bin/bash", "./moshell_install", "-p", "moshelldir=/opt,java=java,perl=/usr/bin/perl"]
    

3. 镜像版本问题

Alpine 3.13已停止维护,建议切换至更稳定的新版本(如3.18或3.19),减少镜像拉取和依赖安装的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:50:27