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

Dockerfile中用tee+EOF创建文件失败、COPY方式报错的解决咨询

问题解决:Dockerfile配置Docker CE源并完成组件安装

问题1:使用RUN + tee + EOF创建repo文件报错

原命令报错核心原因:

  • here-document的结束标记EOF必须顶格书写,不能有任何前导空格/制表符,否则shell会无法识别结束标记,将后续repo配置内容当作系统命令执行(比如[docker-ce-stable]被误判为命令)
  • 硬编码Fedora版本号38可能与基础镜像版本不匹配,且<<EOF后的格式解析易出问题

修正后的RUN命令:

RUN tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
EOF

关键说明:

  • 用<<-'EOF'允许忽略EOF前的制表符(若用空格仍需严格顶格),避免格式解析错误
  • 替换baseurl中的固定版本38为变量$releasever,自动适配基础镜像的Fedora版本
  • 确保末尾EOF单独顶格,无任何前置字符

问题2:COPY repo文件后安装组件找不到匹配包

报错原因:

  • 本地docker-ce.repo内容错误(如硬编码版本、路径无效)
  • 未提前导入Docker GPG密钥,导致repo验证失败被系统跳过
  • 基础镜像的Fedora版本不在Docker官方源支持范围内

解决步骤:

  1. 确保本地docker-ce.repo内容正确
    本地文件需包含以下内容(避免硬编码版本):

    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://download.docker.com/linux/fedora/gpg
    
  2. 提前导入GPG密钥
    在COPY或RUN创建repo后,添加密钥导入命令:

    RUN rpm --import https://download.docker.com/linux/fedora/gpg
    
  3. 完整Dockerfile示例
    方式1(推荐:直接在镜像内生成repo):

    FROM fedora:latest
    
    RUN tee /etc/yum.repos.d/docker-ce.repo <<-'EOF'
    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://download.docker.com/linux/fedora/gpg
    EOF
    
    RUN rpm --import https://download.docker.com/linux/fedora/gpg
    
    RUN dnf install -y nodejs fuse-overlayfs docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    方式2(使用本地repo文件):

    FROM fedora:latest
    
    COPY ./docker-ce.repo /etc/yum.repos.d/
    
    RUN rpm --import https://download.docker.com/linux/fedora/gpg
    
    RUN dnf install -y nodejs fuse-overlayfs docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 验证Fedora版本兼容性
    若仍报错,可通过RUN dnf --showduplicates list docker-ce查看源中可用版本,确认基础镜像的Fedora版本是否被Docker官方支持。


内容的提问来源于stack exchange,提问作者cloudscape-germany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:42:32