我使用 --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/