在 Docker 容器中启动 Jenkins

问题描述 投票:0回答:3

我想在 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

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

jenkins docker centos7
3个回答
23
投票

官方 Jenkins Docker 镜像文档关于卷的说明:

docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

这会将 jenkins 数据存储在主机上的 /your/home 中。确保容器中的 jenkins 用户(jenkins 用户 - uid 1000)可以访问 /your/home 或在 docker run 中使用 -u some_other_user 参数。

此信息也可在 Dockerfile 中找到。 因此,您需要做的就是确保目录

$PWD/jenkins
属于 UID
1000

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

0
投票

最新的 Jenkins 文档说要使用 Docker“卷”。 Docker 在这方面有点棘手,两者之间的区别是带有用于绑定安装的 -v 选项的完整路径名,而只是卷的名称。

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

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

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


0
投票

您可以使用当前的 id 重建 jenkins 镜像:

  • 创建data文件夹
  • 创建Dockerfile
FROM jenkins/jenkins as build

USER root

ARG uid=1003 #  user id
ARG gid=1003 # group id
ENV USER=jenkins
ENV GROUP=jenkins

# Change userid and groupid
RUN usermod -u ${uid} ${USER} && groupmod -g ${gid} ${USER}

# Disable root login
RUN chsh -s /usr/sbin/nologin root

# Set default user login
USER jenkins 
  • 创建docker compose文件
version: "3.6"

services:
  jenkins:
    build:
      context: .
      target: build
    container_name: jenkins
    ports:
      - 8080:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - "$PWD/data:/var/jenkins_home"
    networks:
      - net

networks:
  net:
  • 构建并运行
docker-compose up -d 
  • 获取代币
docker exec -it jenkins bash -c 'cat $JENKINS_HOME/secrets/initialAdminPassword'
© www.soinside.com 2019 - 2024. All rights reserved.