使用远程代理转发时docker buildkit挂载ssh

2024-02-22

我用--sshdocker buildkit 功能,它在本地运行良好。 我想在远程服务器上构建 Docker,为此我使用-A标记转发我的本地 github 密钥,例如:

ssh -i "server.pem" -A <user>@<server-ip>

然后在服务器终端中运行:

ssh -T [email protected] /cdn-cgi/l/email-protection

我收到“Hello user”消息,这意味着密钥转发工作正常。
(在服务器中,$SSH_AUTH_SOCK确实已设置,我可以git clone)

现在,在本地构建时我使用:

DOCKER_BUILDKIT=1 docker build --ssh default=~/.ssh/id_rsa -t myimage:latest .

效果很好。
但在服务器中 ~/.ssh/id_rsa 中不存在私钥。那么如何将其转发到 docker build 呢? 在服务器中尝试过:

DOCKER_BUILDKIT=1 docker build --ssh default=$SSH_AUTH_SOCK -t myimage:latest .

但这不起作用。错误是:

could not parse ssh: [default]: invalid empty ssh agent socket, make sure SSH_AUTH_SOCK is set

虽然SSH_AUTH_SOCK is set

泊坞窗版本:19.03


我有一个类似的问题,它很简单地解决了,我包装了${SSH_AUTH_SOCK}在大括号内

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
DOCKER_BUILDKIT=1 docker build -t myimage:latest --ssh default=${SSH_AUTH_SOCK} .

在 Docker 文件中,我有适当的 RUN 指令来运行需要敏感数据的命令

RUN --mount=type=ssh \
    mkdir vendor && composer install
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用远程代理转发时docker buildkit挂载ssh 的相关文章

随机推荐