给你一键重打镜像的脚本。它基于现有的
quay.io/ascend/vllm-ascend:v0.11.0rc0,在镜像里执行你给的 apt-get 安装指令(加了 --no-install-recommends 和清理),并生成新镜像标签。
把下面内容保存为 rebuild_vllm_with_coreutils.sh,给执行权限后直接运行即可。
#!/usr/bin/env bash
set -euo pipefail
# ===== 可调参数 =====
BASE_IMAGE="${1:-quay.io/ascend/vllm-ascend:v0.11.0rc0}"
NEW_IMAGE="${2:-quay.io/ascend/vllm-ascend:v0.11.0rc0-coreutils}"
DOCKERFILE_TMP="${3:-Dockerfile.vllm.coreutils.tmp}"
# 如需使用代理/加速源可在这里追加 apt 源设置
echo "[i] Base Image : ${BASE_IMAGE}"
echo "[i] New Image : ${NEW_IMAGE}"
echo "[i] Tmp Dockerfile: ${DOCKERFILE_TMP}"
# 检查基础镜像存在且支持 apt-get
echo "[i] Probing base image for apt-get..."
if ! docker run --rm "${BASE_IMAGE}" bash -lc 'command -v apt-get >/dev/null'; then
echo "[!] 基础镜像内没有 apt-get(可能是基于yum/alpine)。请换成对应包管理器再试。"
exit 1
fi
# 生成临时 Dockerfile
cat > "${DOCKERFILE_TMP}" <<'EOF'
# 继承现有 Ascend vLLM 镜像
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
# 确保使用 root 安装;若基础镜像默认非 root,这里切换
USER root
# 更新索引、安装 coreutils、清理 APT 缓存(减小镜像体积)
RUN set -eux; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends coreutils && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 如基础镜像原本切换到特定用户,可在此还原:
# USER <original_user>
EOF
# 构建
echo "[i] Building new image..."
docker build \
--build-arg BASE_IMAGE="${BASE_IMAGE}" \
-f "${DOCKERFILE_TMP}" \
-t "${NEW_IMAGE}" \
.
# 简单验证:查看 ls 版本(coreutils 的一部分)
echo "[i] Verifying coreutils in new image..."
docker run --rm "${NEW_IMAGE}" bash -lc 'ls --version | head -1 || true'
echo "[✓] Done. New image: ${NEW_IMAGE}"
echo "[i] 示例运行: docker run --rm -it ${NEW_IMAGE} bash"
使用方式:
chmod +x rebuild_vllm_with_coreutils.sh
# 用默认参数
./rebuild_vllm_with_coreutils.sh
# 或自定义新标签
./rebuild_vllm_with_coreutils.sh quay.io/ascend/vllm-ascend:v0.11.0rc0 myrepo/vllm-ascend:v0.11.0rc0-coreutils
备注
• 你的原始命令我做了等价增强:–no-install-recommends(更小体积)+ 清理缓存。
• 若基础镜像默认非 root,脚本里的 USER root 会确保能安装。
• 如果在公司内网或需要代理,可以在脚本里追加 APT 源配置再构建。

1414

被折叠的 条评论
为什么被折叠?



