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

标签 docker ssh ssh-keys docker-build docker-buildkit

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

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

然后在服务器终端我运行:
ssh -T git@github.com

我收到“Hello user”消息,这意味着 key 转发工作正常。
(服务器中确实设置了 $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已设置

Docker 版本: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

关于docker buildkit 在使用远程代理转发时挂载 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59838300/

相关文章:

Github - 有时无法通过 ssh 连接

python - 使用 SFTP 的 Paramiko 中的身份验证类型错误

github - 在 Chef 中部署私有(private)存储库 : What am I doing wrong with my deploy key?

linux - 一个 SSH key 适用于多个 Ubuntu 服务器 + Windows + Teamcity

bash - ssh,nohup,然后将结果复制回去

git - 如何将 RSA key 与远程 Git 存储库关联?

docker - 如何在没有域名的 DigitalOcean Docker Droplet 上安装 SSL?

amazon-web-services - 使用 docker-compose 在本地挂载 AWS EFS

docker - 从docker容器运行tensorflow-2.0

php - 如何在 PHP docker 镜像上安装 yarn 和 npm(symfony 4 项目)