Docker 群中的 Jenkins 服务保持在 0/1 副本

Jenkins service in Docker swarm stays at 0/1 replicas

我正在尝试 运行 一个 docker 集群中的容错 Jenkins,使用以下命令:

docker service create --replicas 1 --name jenkins -p 8080:8080 -p 50000:50000 --mount src=/home/ubuntu/jenkins_home,dst=/var/jenkins_home jenkins:alpine

但是检查服务状态和容器 运行ning 我看到副本保持在 0。

ubuntu@ip-172-30-3-81:~$ docker service create --replicas 1 --name jenkins -p 8080:8080 -p 50000:50000 --mount src=/home/ubuntu/jenkins_home,dst=/var/jenkins_home jenkins:alpine
14kwt6xoxorn62irnv9y2wm3r
ubuntu@ip-172-30-3-81:~$ docker service ls
ID            NAME        REPLICAS  IMAGE           COMMAND
14kwt6xoxorn  jenkins     0/1       jenkins:alpine  
87ovyhkparou  helloworld  1/1       alpine          ping docker.com
ubuntu@ip-172-30-3-81:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
739f8180c989        alpine:latest       "ping docker.com"        21 minutes ago      Up 21 minutes                                     helloworld.1.4rz08cygb7whjmzm3922h0bfb

我试过 运行在一个容器中使用 Jenkins(没有 swarm),它工作得很好,来自 docker's tutorial 的 swarm 服务示例也很好用。

是什么阻止了 Jenkins 服务 运行ning?

问题出在传递给 --mount 选项的参数上。

我试图将源作为主机目录传递,而根据 docker swarm documentation,我应该传递 docker 卷。为了纠正这个问题,我做了以下事情。

docker volume create --name jenkins_home 

docker service create --replicas 1 --name jenkins -p 8080:8080 -p 50000:50000 --mount source=jenkins_home,dst=/var/jenkins_home jenkins:alpine

作为旁注,我认为 docker 在找不到安装源时显示错误消息会很有用。