基于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
相关产品推荐
相关产品推荐

