我有一个基于覆盆子pi 3的码头群。我有3个节点。我已经在我的笔记本电脑上创建了一个映像,并将其推送到docker注册表。
如果我尝试使用docker run在群中的一个节点上启动图像,它会按预期工作。
docker run -ti alexellis2/pi-sharp:0.1
但是如果我尝试使用docker服务启动它,它会失败。
docker service create --name test alexellis2/pi-sharp:0.1
错误1/1:没有合适的节点(3个节点上不支持的平台)
如果我在服务上执行docker检查,它会显示此信息。
"Placement": {
"Platforms": [
{
"Architecture": "amd64",
"OS": "linux"
}
]
},
我尝试过修剪容器和图像,但都无济于事。
我的问题是,为什么我可以使用docker run使用镜像,但不能使用docker service?
发布于 2018-03-07 15:14:37
在PC中构建时,构建环境为x86。如果您在Pi上构建映像,则构建环境和体系结构为armhf。
这些图像不是跨平台的,这是目前已知的问题。https://developer.ibm.com/linuxonpower/2017/07/27/create-multi-architecture-docker-image/
您可能是对的,在某些场景中,docker run与docker service的工作方式可能有些奇怪(docker service导致错误状态,docker run工作)
发布于 2018-09-22 17:24:11
通过docker解析图像有一些问题。
当我输入的时候
坞站信息
在我看到的一行代码中:
Architecture: armv7l
但是当我在同一台机器上构建镜像时。然后检查图像,
坞站图像检查7c2f63598729
在其中一行中,我看到了什么:
"io.resin.architecture": "armhf",
这怎么可能呢?已通过向堆栈命令添加其他参数解决此问题
--解析-图像从不
现在,我的堆栈部署如下所示
docker stack deploy --compose-file docker-compose.yml --resolve-image never home
发布于 2020-02-23 17:59:13
如果您可以直接在pi上运行映像,那么您肯定已经为正确的体系结构编译了它。如果它不能使用docker swarm运行,请尝试重新创建堆栈。
我意外地将一个x86镜像拉到了pi,即使在从注册表下载了一个新的与arm兼容的镜像之后,我仍然得到:
no suitable node (unsupported platform on 3 nodes)
在堆栈上执行docker检查时,我可以看到:
"Architecture": "amd64",
"OS": "linux"
重新创建堆栈之后,它正确地启动了。堆栈上的Docker inspect不再有任何架构指示。
https://stackoverflow.com/questions/48962399
复制相似问题