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

Docker构建时拉取私有Git仓库(不嵌SSH密钥)遇权限问题的解决方法

解决Docker构建时拉取私有Git仓库的权限问题

问题根源

切换到非root用户markf78后,Docker构建时的SSH代理默认仅对root用户配置,非root用户无法访问SSH_AUTH_SOCK,导致密钥验证失败;同时ADD命令拉取Git仓库时,需要确保Git能正确调用SSH代理完成身份校验。

修复方案

方案1:调整Dockerfile适配非root用户的SSH代理访问

修改Dockerfile,补充依赖安装、SSH配置及Git代理设置:

# syntax=docker/dockerfile-upstream:master-labs
FROM ubuntu:18.04

# 安装Git和SSH客户端(镜像默认无此工具)
RUN apt-get update && apt-get install -y git openssh-client && rm -rf /var/lib/apt/lists/*

ENV USER=markf78
RUN useradd -m ${USER}

# 配置SSH跳过首次连接的主机确认,避免构建中断
RUN mkdir -p /home/${USER}/.ssh && \
    echo "StrictHostKeyChecking no" >> /home/${USER}/.ssh/config && \
    chown -R ${USER}:${USER} /home/${USER}/.ssh

# 确保非root用户能访问SSH代理socket
RUN mkdir -p /run/ssh-agent && chmod 777 /run/ssh-agent

USER ${USER}
WORKDIR /home/${USER}/temp

# 配置Git使用指定的SSH代理
RUN git config --global core.sshCommand "ssh -o IdentityAgent=/run/ssh-agent.sock"

# 拉取私有仓库
ADD git@192.168.189.143:REPO/my-libs.git /home/${USER}/temp

方案2:调整构建命令,确保代理路径正确

在MacOS终端先启动SSH代理并添加密钥,再执行构建:

# 启动SSH代理并加载密钥
eval $(ssh-agent -s)
ssh-add ~/.ssh/你的ed25519密钥文件名

# 执行Docker构建
docker build -t my-image --ssh default .

方案3:用RUN git clone替代ADD(更灵活)

如果ADD命令的SSH支持存在兼容问题,改用RUN命令克隆仓库:

# syntax=docker/dockerfile-upstream:master-labs
FROM ubuntu:18.04

RUN apt-get update && apt-get install -y git openssh-client && rm -rf /var/lib/apt/lists/*

ENV USER=markf78
RUN useradd -m ${USER}

RUN mkdir -p /home/${USER}/.ssh && \
    echo "StrictHostKeyChecking no" >> /home/${USER}/.ssh/config && \
    chown -R ${USER}:${USER} /home/${USER}/.ssh

USER ${USER}
WORKDIR /home/${USER}/temp

# 配置Git使用当前环境的SSH代理
RUN git config --global core.sshCommand "ssh -o IdentityAgent=$SSH_AUTH_SOCK" && \
    git clone git@192.168.189.143:REPO/my-libs.git .

构建命令同方案2:docker build -t my-image --ssh default .

核心注意事项

  • 全程不要将私钥复制到镜像中,始终通过--ssh参数让Docker构建时临时调用主机的SSH代理
  • 必须确保非root用户对SSH_AUTH_SOCK拥有访问权限,可通过调整目录权限或显式指定代理路径实现
  • 镜像内必须安装git和openssh-client,否则无法执行仓库拉取操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:10:34