如今有多个Jenkins镜像,但官方最推荐的镜像是jenkins/jenkins:lst
,这个镜像是目前Jenkins长期支持版本(Long-Term Support). 该镜像未内置Docker CLi而且没有包含常用的Blue Ocean 插件和特性,想要使用所有Jenkins特性需要执行下列步骤。
注:历史版本的jenkins可以通过查看 Tag
开始- 打开命令行
- 在docker中使用docker network create创建bridge network:
docker network create jenkins
- 为了在Jenkins节点内部执行Docker命令,下载并运行docker:dind Docker镜像并使用docker run命令:
docker run
--name jenkins-docker
--rm
--detach
--privileged
--network jenkins
--network-alias docker
--env DOCKER_TLS_CERTDIR=/certs
--volume jenkins-docker-certs:/certs/client
--volume jenkins-data:/var/jenkins_home
--publish 2376:2376
docker:dind
--storage-driver overlay2
注解
- --name jenkins-docker: (可选)指定容器名称,默认情况下,docker会生成一个独一名称。
- --rm : (可选)当容器关闭时自动移除Docker容器(Docker镜像实例)
- --detach : 后台运行Docker容器。可以通过过
docker stop jenkins-docker
来关闭。 - --privileged : 在docker中运行docker管理员权限才能运行。
- --network jenkins : 该步骤对应之前创建的桥接网络
- --network-alias docker : 使得在jenkin网络下主机名为docker的容器其内部运行容器正常工作。
- --env DOCKER_TLS_CERTDIR=/certs : 使TLS在docke服务中工作,通过有特权容器,推荐选项,即使该操作需要共享数据卷。该环境变量控制着Docker TLS证书管理的根目录。
映射位于容器内/var/jenkins_home目录到Docker数据卷。 - --volume jenkins-docker-certs:/certs/client : 映射位于容器内的/certs/client目录到上述创建的名为jenkins-docker-certs的数据卷中。
- --volume jenkins-data:/var/jenkins_home : 数据卷名为jenkin-data。这会允许其他被该容器控制的Docker容器进程从jenkins挂在数据。
- --publish 2376:2376 :(可选)暴露docker进程端口到主机,该指令有利于控制内嵌docker进程。
- docker:dind : 这个进项子啊运行前需要执行命令:
docker image pull docker:dind.
- --storage-driver overlay: 容器数据卷的储存驱动。
- 通过下列两个步骤可以客制化官方的镜像:
- 创建Dockerfile
FROM jenkins/jenkins:2.332.3-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:1.25.3 docker-workflow:1.28"
- 从该dockerfile创建一个新的镜像在赋予一个名字,如"myjenkins-blueocean:2.332.3-1"
docker build -t myjenkins-blueocean:2.332.3-1 .
- 运行自己的docker build -t myjenkins-blueocean:2.332.3-1 .镜像使用下述命令:
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 jenkins-data:/var/jenkins_home
--volume jenkins-docker-certs:/certs/client:ro
myjenkins-blueocean:2.332.3-1 - 在浏览器上访问 http://localhost:8080 并执行后续操作。