我遇到一个arm64机器集群无法启动容器的问题。所有这些都保持为0 / 2,0 / 1等。这似乎是由于调度设置将它们部署在amd64而不是arm64上,但我无法找到改变它的位置(我假设有一个docker-compose配置)。
$ sudo docker service ls 1 ↵
ID NAME MODE REPLICAS IMAGE PORTS
t761cgtu2n4o persistence_mariadb replicated 0/1 mojlighetsministeriet/mariadb-arm64:latest *:3306->3306/tcp
l1gxlfuwtfs9 services_email replicated 0/2 mojlighetsministeriet/email-arm64:latest
6o1ud2la0eig services_groups replicated 0/2 mojlighetsministeriet/groups-arm64:latest
检查服务时,我得到:
"Placement": {
"Platforms": [
{
"Architecture": "amd64",
"OS": "linux"
}
]
},
我使用docker-compose文件来配置服务,我如何标记要在arm64机器上运行的图像(这些图像在arm64机器上启动时运行$ docker?)
这是一个服务的配置示例:
email:
image: mojlighetsministeriet/email-arm64
secrets:
- smtp-password
environment:
SMTP_HOST: smtp.example.com
SMTP_PORT: 587
SMTP_EMAIL: user@example.com
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 10s
failure_action: continue
monitor: 60s
max_failure_ratio: 0.3
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
labels:
- traefik.docker.network=proxy
- traefik.port=80
- traefik.enable=true
networks:
- proxy
答案 0 :(得分:1)
为了使docker镜像在基于ARM的计算机上运行,基本映像(容器)必须基于ARM。
你不能告诉docker-compose只在ARM模式下运行。实际图像必须基于ARM。
e.g。在hub.docker.com上,您可以找到为基于ARM的计算机创建的基本映像
答案 1 :(得分:0)
在部署堆栈时,通过使用df.groupby('BusId').apply(lambda x: pd.Series(
dict(five=(x.Fair >= 5).sum(),
ten=(x.Fair >= 10).sum())))
# BusId five ten
# abc1 2 1
# abc2 2 0
# abc3 1 0
# abc4 0 0
参数,我设法解决了同样的问题。
--resolve-image never
在docker stack deploy <stack name> --compose-file <compose-file>.yml --resolve-image never
期间,可以使用docker service create