docker 为 mac 群模式部署到 docker 不工作,如何排除故障?
docker deploy to docker for mac swarm mode not working, how to troubleshoot?
我正在尝试为 mac 将一堆服务部署到 docker。让我事先说明一下,将我的堆栈部署到一个真正的群中是完美的。
I 运行 docker for mac Beta 版本 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
returns REPLICAS 0/1。显然它在等待什么。 docker service logs proxy_proxy
returns 什么都没有。这是 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"
}
}
]
另外,我在另一个容器中使用 local-persist 驱动程序。
查找 proxy
服务的任务状态。它会告诉您服务底层任务失败的原因,这应该可以解释为什么您的服务永远不会达到超过 0/1 个副本。
您可以使用 docker service ps $SERVICE_NAME
查找特定服务的任务。或者,具有 docker stack ps $STACK_NAME
.
的堆栈服务的所有任务
无论哪种情况,从第一列中选择任务 ID,然后使用 docker inspect $TASK_ID
获取任务详细信息。 Status
部分可能会为 State
说 running
以外的内容,并且 Message
.
会出现错误
我正在尝试为 mac 将一堆服务部署到 docker。让我事先说明一下,将我的堆栈部署到一个真正的群中是完美的。
I 运行 docker for mac Beta 版本 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
returns REPLICAS 0/1。显然它在等待什么。 docker service logs proxy_proxy
returns 什么都没有。这是 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"
}
}
]
另外,我在另一个容器中使用 local-persist 驱动程序。
查找 proxy
服务的任务状态。它会告诉您服务底层任务失败的原因,这应该可以解释为什么您的服务永远不会达到超过 0/1 个副本。
您可以使用 docker service ps $SERVICE_NAME
查找特定服务的任务。或者,具有 docker stack ps $STACK_NAME
.
无论哪种情况,从第一列中选择任务 ID,然后使用 docker inspect $TASK_ID
获取任务详细信息。 Status
部分可能会为 State
说 running
以外的内容,并且 Message
.