我构建了一个Docker镜像,并使用最新的标签将其推送到Docker Hub。它似乎在Docker Hub上是公共的,但我无法在远程机器上拉取映像。我收到以下错误:
Failed to pull image "sayinmehmet47/kitapkurdu-backend": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/sayinmehmet47/kitapkurdu-backend:latest": no match for platform in manifest: not found
实际上这是我在构建和推送过程中使用的命令
docker build -t sayinmehmet47/kitapkurdu-backend:latest .
docker push sayinmehmet47/kitapkurdu-backend:latest
这也是来自dockerhub的图片
我不明白为什么不能拔出来。它仍然是公开的,可以在此link进行验证。
这也是我的远程机器在牧场尝试拉它与此yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
namespace: kitapkurdu
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: sayinmehmet47/kitapkurdu-backend
ports:
- containerPort: 5000
但是当我使用另一个来自dockerhub的镜像时,我以同样的方式创建的,远程机器接受它并获得镜像。看到一个工作良好时,拉它
docker pull sayinmehmet47/event-bus
所以我得到了这个错误。我猜它在dockerhub中找不到图像。
1条答案
按热度按时间zbsbpyhn1#
这些图像的构建方式并不相同:
在
sayinmehmet47/kitapkurdu-backend:latest
映像中发生的情况是,buildkit将SLSA出处作为第二个映像附加到unknown/unknown
平台。由于带有的清单现在是一个多平台清单,运行时在清单列表中查找其平台,如果找不到,则无法运行映像。对于
sayinmehmet47/event-bus
,它是一个简单的映像,而不是清单列表(OCI索引),因此运行时将尝试在不验证平台的情况下执行它。您可以在buildx构建中禁用出处,以禁用
unknown/unknown
映像,并回退到应该与大多数运行时一起工作的单个平台映像:但是,更好的解决方案是构建映像以在多个平台上运行:
您将看到构建的性能受到影响,特别是如果它是使用CPU的qemu仿真而不是编译器交叉编译来实现的。