无法连接到docker群服务任务
我正在关注Docker Swarm上的一系列博客post,并试图在https://lostechies.com/gabrielschenker/2016/09/11/docker-and-swarm-mode-part-2的最后一部分中举例说明/ (服务发现和负载平衡)工作。 这个想法是启动一个称为bar
的“whoami”服务的3个实例,它只是简单的报告主机的主机名和一个名为foo
的Nginx服务实例,从这个实例中exec /bin/bash
并通过curl激发请求。 然而,我的服务开始后立即退出,不会让我执行任何命令。
给定一个经理节点上有一个经理和两个工人的现有Docker Swarm设置:
# 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,请运行docker inspect --format="{{.Status.ContainerStatus.ContainerID}}" <task id>
。 或者,您可以在运行服务任务的节点上使用普通的docker ps
,并通过名称找出正确的容器。