通过buildx将缓存推送到不安全的注册表

时间:2020-07-30 09:53:47

标签: docker docker-build docker-buildkit

如何将缓存推送到不安全的注册表?我已经将它添加到了docker config中,并且可以通过docker login成功登录。 这是我的docker命令:

docker buildx build --cache-to=type=registry,ref=my-insecure-repo/lib/test:0730 \
    --output=type=image,push=true \
    -t test:0730 -f ut.dockerfile .

并收到错误消息:

#12 ERROR: server message: insufficient_scope: authorization failed
------
 > exporting to image:
------
failed to solve: rpc error: code = Unknown desc = server message: insufficient_scope: authorization failed

我尝试添加--output=type=image,push=true,registry.insecure=true,但存在相同的错误。也尝试添加--allow security.insecure,但得到:failed to solve: rpc error: code = Unknown desc = granting entitlement security.insecure is not allowed by build daemon configuration

Docker版本:Docker 19.03.8版,构建afacb8b

谢谢大家。

2 个答案:

答案 0 :(得分:1)

current advice for buildkit将在docker引擎中为您的不安全注册表配置http前缀:

$ cat /etc/docker/daemon.json
{
  "insecure-registries" : [ "http://my-insecure-repo" ]
}

请确保在调整此文件(systemctl reload docker)后重新加载docker引擎。

但是buildx直接调用buildkit,因此上述方法可能不适用于此问题。相反,您需要将http: true传递给config file。有关更多详细信息,请参见this comment

答案 1 :(得分:0)

也许这些链接会有所帮助:

据我了解,应该可以在构建器创建时为它们提供--buildkitd-flags标志(docker buildx create --help