文章目录
Jenkins 官方文档链接:
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
[root@VM_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已经成功启动:
[root@VM_0_7_centos ~]# mkdir -p /var/jenkins_home
[root@VM_0_7_centos ~]# chown -R 1000 /var/jenkins_home/
[root@VM_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查看运行的镜像:
[root@VM_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 exec -it jenkins /bin/bash
然后查看密码:
[root@VM_0_7_centos ~]# cat /var/jenkins_home/secrets/initialAdminPassword
22e09f367d314ba99838aa080162daba
复制输出的内容,粘贴到Administrator password,输入 exit 退出容器,此时进行下一步你会看到此界面,点击 Install suggested plugins
等待安装完毕:
如果有插件安装失败,不用紧张,安装结束之后会有"Retry”重试选项,点击重试即可。
根据表单填写信息之后就结束了!
进入主界面后如果看到右上角有错误的提示信息,那么请把你的Jenkins升级到最新版本,然后更新一下插件。
如果更新之后出现协议警告: