docker部署到Docker的Mac群集模式无法正常工作,如何排除故障?

我正试图部署一堆服务的docker为Mac。 让我说事先把我的堆栈部署到一个真正的群体完美的作品。

我运行docker为Mac版本17.05.0-ce-rc1-mac8(16582)。 我确实运行了swarm init

这是我的yaml文件:

 version: "3" services: proxy: image: traefik:1.2-alpine command: --web --docker --docker.swarmmode --docker.domain=docker.localhost --docker.watch --debug --logLevel=DEBUG \ --entryPoints='Name:https Address::443 TLS' \ --entryPoints='Name:http Address::80 Redirect.EntryPoint:https' \ --acme=true \ --acme.entryPoint=https \ --acme.email=myemail@gmail.com \ --acme.storage=/etc/traefik/acme/acme.json \ --acme.domains=mydomain.com \ --acme.ondemand=true \ --acme.onhostrule=true networks: - proxy ports: - 80:80 - 443:443 - 8080:8080 volumes: - /var/run/docker.sock:/var/run/docker.sock - traefikdata:/etc/traefik/acme deploy: placement: constraints: - node.labels.env == prod - node.role == manager - node.labels.traefik == yes volumes: traefikdata: driver: local-persist driver_opts: mountpoint: ${MOUNTPOINT}/data/traefik networks: proxy: driver: overlay 

问题是, docker stack services proxy返回REPLICAS 0/1。 显然它正在等待一些东西。 docker service logs proxy_proxy根本没有返回。 以下是syslog -k Sender Docker的输出:

 Apr 24 22:15:21 MacBook-Pro Docker[2567] <Warning>: DNS lookup registry-1.docker.io AAAA: NoSuchRecord Apr 24 22:15:21 MacBook-Pro Docker[2567] <Notice>: DNS lookup registry-1.docker.io A: registry-1.docker.io <IN|19> [A (34.205.194.204)], registry-1.docker.io <IN|19> [A (34.239.237.19)], registry-1.docker.io <IN|19> [A (107.23.152.57)], registry-1.docker.io <IN|19> [A (50.17.48.108)], registry-1.docker.io <IN|19> [A (52.0.56.248)], registry-1.docker.io <IN|19> [A (52.45.235.210)] Apr 24 22:15:21 MacBook-Pro Docker[2567] <Warning>: DNS lookup auth.docker.io AAAA: NoSuchRecord Apr 24 22:15:21 MacBook-Pro Docker[2567] <Notice>: DNS lookup auth.docker.io A: auth.docker.io <IN|38> [A (34.205.194.204)], auth.docker.io <IN|38> [A (52.45.235.210)], auth.docker.io <IN|38> [A (52.0.56.248)], auth.docker.io <IN|38> [A (34.239.237.19)], auth.docker.io <IN|38> [A (50.17.48.108)], auth.docker.io <IN|38> [A (107.23.152.57)] Apr 24 22:15:22 MacBook-Pro Docker[2567] <Notice>: DNS lookup registry-1.docker.io A: registry-1.docker.io <IN|19> [A (34.205.194.204)], registry-1.docker.io <IN|19> [A (34.239.237.19)], registry-1.docker.io <IN|19> [A (107.23.152.57)], registry-1.docker.io <IN|19> [A (50.17.48.108)], registry-1.docker.io <IN|19> [A (52.0.56.248)], registry-1.docker.io <IN|19> [A (52.45.235.210)] Apr 24 22:15:22 MacBook-Pro Docker[2567] <Warning>: DNS lookup registry-1.docker.io AAAA: NoSuchRecord 

我不知道这是否正常,图像是否正确下载。

现在,我如何解决发生了什么事? 顺便说一句:我确实应用了所有必要的标签,这里是docker inspect moby的输出:

 [ { "ID": "13xgtap3b898mwrxryj21phr5", "Version": { "Index": 41 }, "CreatedAt": "2017-04-24T19:41:30.814976621Z", "UpdatedAt": "2017-04-24T20:21:21.157096648Z", "Spec": { "Labels": { "env": "prod", "traefik": "yes" }, "Role": "manager", "Availability": "active" }, "Description": { "Hostname": "moby", "Platform": { "Architecture": "x86_64", "OS": "linux" }, "Resources": { "NanoCPUs": 4000000000, "MemoryBytes": 2095894528 }, "Engine": { "EngineVersion": "17.05.0-ce-rc1", "Plugins": [ { "Type": "Network", "Name": "bridge" }, { "Type": "Network", "Name": "host" }, { "Type": "Network", "Name": "ipvlan" }, { "Type": "Network", "Name": "macvlan" }, { "Type": "Network", "Name": "null" }, { "Type": "Network", "Name": "overlay" }, { "Type": "Volume", "Name": "local" }, { "Type": "Volume", "Name": "local-persist" } ] } }, "Status": { "State": "ready", "Addr": "192.168.65.2" }, "ManagerStatus": { "Leader": true, "Reachability": "reachable", "Addr": "192.168.65.2:2377" } } ] 

另外,我在另一个容器中使用本地persist驱动程序。

查找proxy服务的任务状态(es)。 它会告诉你为什么服务底层的任务失败,这应该解释为什么你的服务永远不会超过0/1复制品。

您可以使用docker service ps $SERVICE_NAMEfind特定服务的任务。 或者,使用docker stack ps $STACK_NAME进行堆栈服务的所有任务。

在任何一种情况下,从第一列挑出任务ID,然后使用docker inspect $TASK_ID获取任务详细信息。 Status部分可能会说除了running State以外的东西,并为Message错误。