我尝试使用以下命令在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's tutorial的swarm服务示例也可以完美运行。
什么阻止Jenkins服务运行?
答案 0 :(得分:2)
问题在于传递给--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显示错误消息会很有用。