无法连接到 docker 集群服务任务
Cannot connect to docker swarm service task
我正在关注 Docker Swarm 上的一系列博客文章,并试图在 https://lostechies.com/gabrielschenker/2016/09/11/docker-and-swarm-mode-part-2/(服务发现和负载平衡)的最后一部分中创建一个示例。这个想法是启动一个名为 bar
的 "whoami" 服务的 3 个实例,它只报告它的主机名和一个名为 foo
的 Nginx 服务实例,从中执行 /bin/bash
并通过 curl 向 bar
s 发出请求。但是,我的服务在启动后立即退出,并且不允许我对它们执行任何命令。
假设现有 Docker Swarm 设置有 1 个管理器和 2 个工作器,在管理器节点上:
# docker service create --name foo --replicas 1 --network test nginx
194bw6mbgwyhmyl82zcxbyzat
# docker service create --name bar --replicas 3 --network test --publish 8000:8000 jwilder/whoami
alhz41p6usu7pbyesiiqh2hrd
# docker service ls
ID NAME REPLICAS IMAGE COMMAND
194bw6mbgwyh foo 0/1 nginx
alhz41p6usu7 bar 0/3 jwilder/whoami
# docker service ps foo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
5vlgohetx4l95hm2mcggd4r6a foo.1 nginx docker-swarm-1 Running Running 5 seconds ago
# docker service ps bar
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
f1w9dxlaqgjlscwkf6ocdrui9 bar.1 jwilder/whoami docker-swarm-2 Running Running 23 seconds ago
7xg7p0rc8oerp0p6nvnm3l73i bar.2 jwilder/whoami docker-swarm-2 Running Running 24 seconds ago
8m2ct4pcc8t263z1n4zmitn5y bar.3 jwilder/whoami docker-swarm-3 Running Running 25 seconds ago
结果是:
# docker exec -it 5vlgohetx4l95hm2mcggd4r6a /bin/bash
Error response from daemon: No such container: 5vlgohetx4l95hm2mcggd4r6a
我做错了什么?
命令docker service ps <service>
给出的id其实不是容器id,而是任务id。要找出容器 ID,运行 docker inspect --format="{{.Status.ContainerStatus.ContainerID}}" <task id>
。或者,您可以在服务任务为 运行ning 的节点上使用纯 docker ps
并通过其名称找出正确的容器。
我正在关注 Docker Swarm 上的一系列博客文章,并试图在 https://lostechies.com/gabrielschenker/2016/09/11/docker-and-swarm-mode-part-2/(服务发现和负载平衡)的最后一部分中创建一个示例。这个想法是启动一个名为 bar
的 "whoami" 服务的 3 个实例,它只报告它的主机名和一个名为 foo
的 Nginx 服务实例,从中执行 /bin/bash
并通过 curl 向 bar
s 发出请求。但是,我的服务在启动后立即退出,并且不允许我对它们执行任何命令。
假设现有 Docker Swarm 设置有 1 个管理器和 2 个工作器,在管理器节点上:
# docker service create --name foo --replicas 1 --network test nginx
194bw6mbgwyhmyl82zcxbyzat
# docker service create --name bar --replicas 3 --network test --publish 8000:8000 jwilder/whoami
alhz41p6usu7pbyesiiqh2hrd
# docker service ls
ID NAME REPLICAS IMAGE COMMAND
194bw6mbgwyh foo 0/1 nginx
alhz41p6usu7 bar 0/3 jwilder/whoami
# docker service ps foo
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
5vlgohetx4l95hm2mcggd4r6a foo.1 nginx docker-swarm-1 Running Running 5 seconds ago
# docker service ps bar
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
f1w9dxlaqgjlscwkf6ocdrui9 bar.1 jwilder/whoami docker-swarm-2 Running Running 23 seconds ago
7xg7p0rc8oerp0p6nvnm3l73i bar.2 jwilder/whoami docker-swarm-2 Running Running 24 seconds ago
8m2ct4pcc8t263z1n4zmitn5y bar.3 jwilder/whoami docker-swarm-3 Running Running 25 seconds ago
结果是:
# docker exec -it 5vlgohetx4l95hm2mcggd4r6a /bin/bash
Error response from daemon: No such container: 5vlgohetx4l95hm2mcggd4r6a
我做错了什么?
命令docker service ps <service>
给出的id其实不是容器id,而是任务id。要找出容器 ID,运行 docker inspect --format="{{.Status.ContainerStatus.ContainerID}}" <task id>
。或者,您可以在服务任务为 运行ning 的节点上使用纯 docker ps
并通过其名称找出正确的容器。