我正在尝试构建推到本地注册表。我有docker login <registry>的成功。
我是建立在macos上。看起来这和docker-container有关。
标准码头工程:
docker build -t <registry>/demo
docker push <registry>/demo但是buildx不起作用:
docker buildx create --use --name my-builder --driver-opt network=host --buildkitd-flags '--allow-insecure-entitlement network.host' --use或者这个:
docker buildx create --name my-builder --platform $platforms --driver docker-container --driver-opt network=host --use我知道这个错误:
docker buildx build --builder my-builder --tag <registry>:5000/demo -f Dockerfile .
...
=> ERROR exporting to image 0.3s
=> => exporting layers 0.2s
=> => exporting manifest sha256:b7bbe730a33ba61b903b4371ded8057dd1a129fd60ff261e3a3ce5ef3425924e 0.0s
=> => exporting config sha256:c38954cc53caf2cc4dd08ea836c3f2ab8951f400ce6731401628c9ba78f4ce5f 0.0s
=> => pushing layers 0.0s
------
> exporting to image:
------
ERROR: failed to solve: failed to do request: Head "https://<registry>:5000/v2/demo/blobs/sha256:659301074bba138f5e7a1896fbe03daa5d95ce5b4f804af5a2c9ea03e9411b8b": http: server gave HTTP response to HTTPS client有什么特别的事情要用buildx来推送吗?
发布于 2022-09-07 20:14:40
如果您使用的是本地注册表,如:
$ docker运行-d -p 5001:5000 --始终重新启动-名称注册中心:2
(在我的设置中,本地注册端口是5001而不是5000,因为mac (m1应用硅)在该端口上有一个进程)。
然后您可能需要创建自定义buildx (bash脚本),例如:
#!/bin/sh
name=container-builder
docker buildx ls | grep -q $name && docker buildx rm $name
docker buildx create --driver-opt network=host --use --config config.toml --name $nameconfig.toml文件有:
[registry."localhost:5001"]
http = true另外,对于我在Docker引擎中的本地注册表(通过Dashboard),添加到docker守护进程配置中:
"experimental": true,
"features": {
"buildkit": true
},
"insecure-registries": [
"localhost:5001"
]这将修复本地注册表的https错误。
https://stackoverflow.com/questions/73612351
复制相似问题