3

我正在尝试使用以下命令在 docker swarm 中运行容错 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

但是检查服务状态和正在运行的容器,我发现副本保持在 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 教程中的 swarm 服务示例也运行良好。

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

4

1 回答 1

3

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

当我应该根据docker swarm 文档传递 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 在找不到挂载源时显示错误消息会很有用。

于 2017-05-30T12:58:43.043 回答