docker service replicas仍为0/1

Sam*_*mar 24 docker docker-swarm

我在我的Mac上尝试使用1.12的docker swarm.我启动了3个VirtualBox虚拟机,创建了一个3的swarm集群.

docker@redis1:~$ docker node ls 
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
2h1m8equ5w5beetbq3go56ebl    redis3  Ready Active 
8xubu8g7pzjvo34qdtqxeqjlj    redis2  Ready Active Reachable 
cbi0lyekxmp0o09j5hx48u7vm *  redis1  Ready Active Leader
Run Code Online (Sandbox Code Playgroud)

但是,当我创建服务时,我看到没有错误,但副本始终显示0/1:

docker@redis1:~$ docker service create --replicas 1 --name hello ubuntu:latest /bin/bash
76kvrcvnz6kdhsmzmug6jgnjv
docker@redis1:~$ docker service ls
ID            NAME   REPLICAS  IMAGE          COMMAND
76kvrcvnz6kd  hello  0/1       ubuntu:latest  /bin/bash
docker@redis1:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?我在哪里寻找原木?谢谢!

Ber*_*ard 36

问题是你的任务(调用bin/bash)很快就会退出,因为它没有做任何事情.

如果您查看服务的任务,您将看到一个已启动,然后在几秒钟内关闭.然后启动另一个,关闭等等,因为您被要求始终运行1个任务.

docker service ps hello
Run Code Online (Sandbox Code Playgroud)

ubuntu:latest top例如,如果您使用,该任务将保持运行.

  • 为了保持容器运行而不做太多,你也可以使用```docker run alpine tail -f/dev/null```它基本上启动一个`alpine`容器并且什么都不看(/ dev/null).这将咀嚼最小的CPU.如果您希望稍后将"docker exec"放入其中以检查卷,网络等,则在"备用"中运行容器非常有用. (2认同)

Jim*_*ker 6

如果您在撰写文件中指定绑定到不存在的本地目录的卷,也会发生这种情况。

如果您查看日志(在某些 Linux 系统上,这是journalctl -xe),您将看到无法绑定哪个卷。