安装
# 配置要求
最低硬件要求:
- 256 MB 内存
- 1 GB 硬盘空间(如果将 Jenkins 作为 Docker 容器运行,则建议至少使用 10 GB)
小型团队推荐的硬件配置:
- 4 GB+ 内存
- 50 GB+ 硬盘空间
# Docker 安装
# 创建 桥接网络
docker network create jenkins
# 运行 DinD
docker:dind
镜像是一个提供 Docker-in-Docker(DinD)功能的镜像。DinD 允许在 Docker 容器内部运行 Docker 守护进程,从而可以在容器内构建、运行和管理 Docker 容器。这对于一些特定的开发和测试场景非常有用。
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume /data/jenkins/jenkins-docker-certs:/certs/client \
--volume /data/jenkins/jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
--rm
:关闭时自动删除 Docker 容器--detach
:后台运行--privileged
:特权访问--storage-driver
:Docker 卷的存储驱动程序
# 定制 Jenkins 镜像
在 jenkins/jenkins - Docker Image | Docker Hub (opens new window) 找一个 LTS 版本,如当前最新版为
docker pull jenkins/jenkins:lts-jdk11
编写 Dockerfile
vim Dockerfile
FROM jenkins/jenkins:lts-jdk11
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
- 基于原版,安装了插件:
blueocean
、docker-workflow
docker build -t myjenkins-blueocean:lts .
# 运行 Jenkins 镜像
修改权限
chown -R 1000:1000 /data/jenkins/jenkins-data
如果不修改,run 时就会出现以下报错
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
docker run \
--name jenkins-blueocean \
--restart=on-failure \
--detach \
--network jenkins \
--env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client \
--env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 \
--publish 50000:50000 \
--volume /data/jenkins/jenkins-data:/var/jenkins_home \
--volume /data/jenkins/jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:lts
# 访问 Jenkins
- 使用
docker logs jenkins-blueocean
或docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword
查看初始密码 - 访问
Docker服务器ip:8080
# 参考
上次更新: 2023/11/19, 11:33:20