在Docker容器中启动Jenkins

12

我希望在Centos7上的Docker容器中运行Jenkins。 我看到了Jenkins的官方文档: 首先,从Docker仓库拉取官方的Jenkins镜像。

docker pull jenkins

接下来,使用此镜像运行容器并将数据目录从容器映射到主机上;例如,在下面的示例中,容器中的 /var/jenkins_home 被映射到主机上当前路径下的 jenkins/ 目录。Jenkins 8080 端口也被暴露给主机作为 49001 端口。

docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home -t jenkins

但是当我尝试运行docker容器时,出现了以下错误:
/usr/local/bin/jenkins.sh: line 25: /var/jenkins_home/copy_reference_file.log: Permission denied

有人可以告诉我如何解决这个问题吗?

它运行正常。您是否具有对容器运行位置的写入权限? - Opal
我认为这是一个问题。我认为我必须确保容器可以在我的主机上写入一些内容。 - user5558501
如果你想让容器持久化,那么肯定允许容器在主机上写入。 - Opal
2个回答

23
官方的Jenkins Docker镜像文档中关于卷的说明如下:
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

This will store the jenkins data in /your/home on the host. Ensure that /your/home is accessible by the jenkins user in container (jenkins user - uid 1000) or use -u some_other_user parameter with docker run.

这些信息也可以在Dockerfile中找到。因此,您只需要确保目录$PWD/jenkins是由UID1000拥有:

mkdir jenkins
chown 1000 jenkins
docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home -t jenkins

我仍然遇到错误:无法创建主目录'/media/mydrive/JENKINS_HOME'。这很可能是权限问题。 - IgorGanapolsky
在Docker服务器上,使/your/home目录的所有者为UID 1000(以匹配Jenkins容器中的Jenkins用户(UID = 1000))。如果需要,在Docker服务器上添加一个具有UID = 1000的Jenkins用户。 - gaoithe
我该如何确保UID 1000拥有那个文件夹? - Nicolas S.Xu
@NicolasS.Xu 这就是 chown 1000 jenkins 的作用,它将目录 jenkins 的所有者更改为 UID 为 1000 的用户。 - mata
我不确定 UID 100(Dockerfile Thmasleveil 链接的是 100 而不是 1000)。 但是我运行 chown 100 jenkins,一切正常。 之后,我通过浏览器链接作为容器执行以检查密码。 这在许多情况下都有效。 - PaPu

0

最新的Jenkins文档建议使用Docker“卷”。

Docker在这方面有点棘手,绑定挂载选项的完整路径名与卷名称之间存在区别。

docker run -d -p 49001:8080 -v jenkins-data:/var/jenkins_home -t jenkins

这个命令将创建一个名为“jenkins-data”的Docker卷,您将不再看到错误。

管理卷的链接: https://docs.docker.com/storage/volumes/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接