Docker swarm with compose file,将架构设置为arm64

时间:2017-12-13 20:03:25

标签: docker docker-compose docker-swarm arm64

我遇到一个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

2 个答案:

答案 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