1

我一直在使用docker build--ssh标志来让构建从 ssh-agent 访问我的密钥。

当我用 podman 尝试同样的事情时,它不起作用。我正在开发 macOS Monterey 12.0.1。英特尔芯片。我也在 Ubuntu 和 WSL2 上复制了这个。

❯ podman --version
podman version 3.4.4

这是一个示例 Dockerfile:

FROM python:3.10

RUN mkdir -p -m 0600 ~/.ssh \
    && ssh-keyscan github.com >> ~/.ssh/known_hosts

RUN --mount=type=ssh git clone git@github.com:ruarfff/a-private-repo-of-mine.git

当我运行DOCKER_BUILDKIT=1 docker build --ssh default .它时,即构建成功,repo 被克隆并且 ssh 密钥没有被烘焙到图像中。

当我运行podman build --ssh default .构建失败时:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: error building at STEP "RUN --mount=type=ssh git clone git@github.com:ruarfff/a-private-repo-of-mine.git": error while running runtime: exit status 128

我刚刚开始玩 podman。查看文档,该标志似乎受到支持。我尝试过使用这种格式,例如直接指定 id,但到目前为止没有指定标志或挂载的变化。关于 podman 的工作原理,我可能会遗漏一些东西来解释这一点吗?

按照评论中的建议添加此行:

RUN --mount=type=ssh ssh-add -l 

导致此错误:

STEP 4/5: RUN --mount=type=ssh ssh-add -l 
Could not open a connection to your authentication agent.
Error: error building at STEP "RUN --mount=type=ssh ssh-add -l": error while running runtime: exit status 2

编辑:

我相信这可能与buildah 中的这个问题有关。修复已合并,但据我所知尚未发布。

4

0 回答 0