2016-01-15 203 views
0

我有一台安装了docker-machine的测试Ubuntu服务器。我有一些Docker容器在服务器上运行。包括一个詹金斯容器。我使用以下命令运行jenkins从命令提示符运行docker命令与jenkins脚本

docker run -d --name jenkins -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker --restart=always -p 8080:8080 -v ~/jenkinsHome:/var/jenkins_home docker-jenkins 

我正在通过Jenkins管理我的图像。我可以通过Jenkins shell脚本启动除我的一个容器之外的所有容器。一个容器出现故障似乎在脚本中开始(我在docker运行脚本后做了docker PS)。但是,脚本完成后容器停止。我使用的命令提示符下的工作方式相同泊坞窗运行命令,但在詹金斯脚本失败:

sudo docker run -d --net=host -v ~/plex-config:/config -v ~/Media:/media -p 32400:32400 wernight/plex-media-server 

我有双重检查文件夹的权限,他们是正确的。任何人都可以指导我找出可能的原因,运行命令在Jenkins中失败,但不是在命令提示符处?

+0

附注:当你也使用'--net = host'时,使用'-p 32400:32400'没有意义。当使用'--net = host'时,在容器上打开的所有端口都将在docker主机上打开 – Thomasleveil

+0

您是否可以在jenkins中启动无法启动的容器时共享“docker logs”的输出? – Thomasleveil

+0

什么是使用帐户码头奴隶运行?它有sudo权限是否正确?任何其他环境参数不同? – Jayan

回答

0

使用docker ps =a我能够得到一个停止的容器的ID。然后通过使用docker logs我能够看到错误是文件夹权限问题。然后深入挖掘,这是Jenkins运行的用户权限错误不匹配,因为它的容器内部无法正确传递文件夹。我决定通过使用docker stop和start命令而不是使用docker run命令来绕过这个问题。

相关问题