使用Docker部署Jenkins

文章目录


Jenkins 官方文档链接:

url:https://jenkins.io/zh/

Docker版:

安装Jenkins:
首先不直接从Docker Store上直接Pull Jenkins 的 Image 文件,因为待会需要进行dotnet core 的 Docker自动部署,需要对宿主机上的Docker进行直接操作,那么需要挂载 Docker 给 Jenkins Image,所以现在需要自己动手编写 Dockerfile 构建自定义的Jenkins。

1.新建Dockerfile

touch Dockerfile
vim Dockerfile

2.加入以下内容:

FROM jenkins

USER root
#清除了基础镜像设置的源,切换成腾讯云的jessie源
#使用非腾讯云环境的需要将 tencentyun 改为 aliyun
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
  && echo "deb http://mirrors.tencentyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
  && echo "deb http://mirrors.tencentyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
  && echo "deb http://mirrors.tencentyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
#更新源并安装缺少的包
RUN apt-get update && apt-get install -y libltdl7 && apt-get update

ARG dockerGid=999

RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 

# 安装 docker-compose 因为等下构建环境的需要
RUN curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

RUN chmod +x /usr/local/bin/docker-compose

3.构建image

docker build . -t auto-jenkins
[[email protected]_0_7_centos ~]# docker build . -t auto-jenkins
Sending build context to Docker daemon 596.5 kB
Step 1/8 : FROM jenkins
Trying to pull repository docker.io/library/jenkins ... 
latest: Pulling from docker.io/library/jenkins
55cbf04beb70: Pull complete 
1607093a898c: Pull complete 
9a8ea045c926: Pull complete 
d4eee24d4dac: Pull complete 
c58988e753d7: Pull complete 
794a04897db9: Pull complete 
70fcfa476f73: Pull complete 
0539c80a02be: Pull complete 
54fefc6dcf80: Pull complete 
911bc90e47a8: Pull complete 
38430d93efed: Pull complete 
7e46ccda148a: Pull complete 
c0cbcb5ac747: Pull complete 
35ade7a86a8e: Pull complete 
aa433a6a56b1: Pull complete 
841c1dd38d62: Pull complete 
b865dcb08714: Pull complete 
5a3779030005: Pull complete 
12b47c68955c: Pull complete 
1322ea3e7bfd: Pull complete 
Digest: sha256:eeb4850eb65f2d92500e421b430ed1ec58a7ac909e91f518926e02473904f668
Status: Downloaded newer image for docker.io/jenkins:latest
 ---> cd14cecfdb3a
Step 2/8 : USER root
 ---> Running in 4fa158aa1fbe
 ---> 6cdfca213c2e
Removing intermediate container 4fa158aa1fbe
Step 3/8 : RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list   && echo "deb http://mirrors.tencentyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list   && echo "deb http://mirrors.tencentyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list   && echo "deb http://mirrors.tencentyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
 ---> Running in 7207e03ddee4

 ---> 3b989e83691d
Removing intermediate container 7207e03ddee4
Step 4/8 : RUN apt-get update && apt-get install -y libltdl7 && apt-get update
 ---> Running in de722d81a2b0

Ign:1 http://mirrors.tencentyun.com/debian jessie InRelease
Get:2 http://mirrors.tencentyun.com/debian jessie-updates InRelease [7340 B]
Get:3 http://mirrors.tencentyun.com/debian-security jessie/updates InRelease [44.9 kB]
Get:4 http://mirrors.tencentyun.com/debian jessie Release [148 kB]
Get:5 http://mirrors.tencentyun.com/debian-security jessie/updates/contrib amd64 Packages [2506 B]
Get:6 http://mirrors.tencentyun.com/debian-security jessie/updates/non-free amd64 Packages [4556 B]
Get:7 http://mirrors.tencentyun.com/debian-security jessie/updates/main amd64 Packages [664 kB]
Get:8 http://mirrors.tencentyun.com/debian jessie Release.gpg [2420 B]
Get:9 http://mirrors.tencentyun.com/debian jessie/main amd64 Packages [6818 kB]
Get:10 http://mirrors.tencentyun.com/debian jessie/contrib amd64 Packages [49.8 kB]
Get:11 http://mirrors.tencentyun.com/debian jessie/non-free amd64 Packages [83.2 kB]
Fetched 7824 kB in 3s (2412 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  libltdl7
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 45.4 kB of archives.
After this operation, 70.7 kB of additional disk space will be used.
Get:1 http://mirrors.tencentyun.com/debian jessie/main amd64 libltdl7 amd64 2.4.2-1.11+b1 [45.4 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 45.4 kB in 0s (274 kB/s)
Selecting previously unselected package libltdl7:amd64.
(Reading database ... 21455 files and directories currently installed.)
Preparing to unpack .../libltdl7_2.4.2-1.11+b1_amd64.deb ...
Unpacking libltdl7:amd64 (2.4.2-1.11+b1) ...
Setting up libltdl7:amd64 (2.4.2-1.11+b1) ...
Ign:1 http://mirrors.tencentyun.com/debian jessie InRelease
Hit:2 http://mirrors.tencentyun.com/debian jessie-updates InRelease
Hit:3 http://mirrors.tencentyun.com/debian-security jessie/updates InRelease
Hit:4 http://mirrors.tencentyun.com/debian jessie Release
Reading package lists...
 ---> 6d91b72a223a
Removing intermediate container de722d81a2b0
Step 5/8 : ARG dockerGid=999
 ---> Running in 84d979bb5601
 ---> 0b46af6b2d74
Removing intermediate container 84d979bb5601
Step 6/8 : RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
 ---> Running in 8ac0003aaab1

 ---> 1870dfb12f8d
Removing intermediate container 8ac0003aaab1
Step 7/8 : RUN curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 ---> Running in 97d9247fece7

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    731      0 --:--:-- --:--:-- --:--:--   731
100 8648k  100 8648k    0     0   405k      0  0:00:21  0:00:21 --:--:--  838k
 ---> a946e322b7ca
Removing intermediate container 97d9247fece7
Step 8/8 : RUN chmod +x /usr/local/bin/docker-compose
 ---> Running in d0a96bffb56c

 ---> 9a475bb5f83e
Removing intermediate container d0a96bffb56c
Successfully built 9a475bb5f83e

出现以上 Successfully 内容代表安装Jenkins成功

4.在启动Jenkins时,需要先创建一个Jenkins的配置目录,并且挂载到docker 里的Jenkins目录下
5.修改目录权限(很重要!)
6.运行 Jenkins
出现一串很长的字符串以后,我们的jenkins已经成功启动:
    
[[email protected]_0_7_centos ~]# mkdir -p /var/jenkins_home
[[email protected]_0_7_centos ~]# chown -R 1000 /var/jenkins_home/
[[email protected]_0_7_centos ~]# docker run --name jenkins -p 8080:8080 -p 50000:50000 \
>     -v /var/run/docker.sock:/var/run/docker.sock \
>     -v $(which docker):/bin/docker \
>     -v /var/jenkins_home:/var/jenkins_home \
>     -d auto-jenkins
d74d82661514205d6e1ac56574724277400a26a3095aca4497dad5bf8039816d


通过命令docker ps查看运行的镜像:

[[email protected]_0_7_centos ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
d74d82661514        auto-jenkins        "/bin/tini -- /usr..."   13 seconds ago      Up 11 seconds       0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins

配置Jenkins
访问http://<你的ip>:8080访问Jenkins。

使用Docker部署Jenkins

可以看到需要我们输入密码。

首选进入容器:

docker exec -it jenkins /bin/bash

然后查看密码:

[[email protected]_0_7_centos ~]# cat /var/jenkins_home/secrets/initialAdminPassword 
22e09f367d314ba99838aa080162daba

复制输出的内容,粘贴到Administrator password,输入 exit 退出容器,此时进行下一步你会看到此界面,点击 Install suggested plugins

使用Docker部署Jenkins

等待安装完毕:
使用Docker部署Jenkins

如果有插件安装失败,不用紧张,安装结束之后会有"Retry”重试选项,点击重试即可。

使用Docker部署Jenkins

根据表单填写信息之后就结束了!

进入主界面后如果看到右上角有错误的提示信息,那么请把你的Jenkins升级到最新版本,然后更新一下插件。

如果更新之后出现协议警告:

使用Docker部署Jenkins使用Docker部署Jenkins

参考文档:https://www.cnblogs.com/stulzq/p/8627360.html