下载 Decker CE
CentOS 7 基本仓库是带docker的,但是不是官方的版本,而且版本也比较低,我们使用官方的yum源,而且对以后的升级也很方便。
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
通常会指定版本安装,如果不指定,将会使用最新版本安装,通过使用下面的命令,可以查看docker的版本信息。
yum list docker-ce.x86_64 --showduplicates | sort -r
安装时可以指定版本,默认安装最新版
yum install docker-ce -<VERSION>
配置加速器
针对国内使用docker服务器拉取速度会很慢的情况,我们可以使用BTA提供的加速器,
这里使用阿里提供了免费的加速器服务:修改daemon配置文件/etc/docker/daemon.json
来使用加速器,
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装Jenkins
不直接从Docker Store上直接Pull Jenkins 的 Image 文件,因为要进行dotnet core 的 Docker自动部署,需要对宿主机上的Docker进行直接操作,那么需要挂载 Docker 给 Jenkins Image,所以现在需要自己动手编写 Dockerfile 构建自定义的Jenkins。
//创建Dockerfile文件编辑
touch Dockerfile
vim Dockerfile
Dockerfile文件中手动添加配置环境
FROM jenkins
USER root
#使用环境的
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list
&& echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list
&& echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list
&& echo "deb http://mirrors.aliyun.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
构建docker中Jenkins的image
docker build . -t auto-jenkins
出现以Successfully tagged auto-jenkins:latest 内容代表安装Jenkins成功,可以使用docker images 查看。
创建一个Jenkins的配置目录
mkdir -p /var/jenkins_home
将Jenkins run起来
docker run --name jenkins -p 8001: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
第一行:构建一个名称为jenkins的容器 -p 是容器运行开放端口 (左边是服务器端口:右边是容器中的端口)
第二行 和第三行: -v 是将宿主机的docker文件挂载进容器里
第四行:建立宿主机的配置目录,挂载进docker容器里,这样容器里的Jenkins配置目录文件就会映射出来
第五行:使用auto-jenkins Image 并且后台启动
通过docker ps 查到容器
执行docker ps 查询不到时,使用docker ps -a 查询,如果容器存在 status列报错,执行docker start -a jenkins 让容器前台输出运行信息的方式运行
报这个错是文件夹权限问题,修改文件夹权限
chown -R 1000 /var/jenkins_home
重新docker run 之前需要先删除之前的容器
docker rm -f jenkins
下面在电脑上输入http://xxxxx:8001,打开Jenkins 页面
jenkins配置
Jenkins首次打开会要求用户输入密钥,这个密钥会在指定的路径下面,有两种查看密钥的方式
1、直接到/var/jenkins_home/secrets/initialAdminPassword 路径下面去找密钥,在执行docker run 的时候,我们在cengtos 中创建了一个 /var/jenkins_home
的映射
cat /var/jenkins_home/secrets/initialAdminPassword
2、进去到容器中到 找同样的地址
docker exec -it jenkins /bin/bash
输入地址和端口号打开jenkins,首次进入需要将找到的密码复制进去,然后创建账号,随便填就好了
初始化jenkins
选择新建一个项目,构建一个自由风格的软件项目
设置源码管理和分支
Poll SCM设置 ,可以根据自己实际情况设置,定时感知代码分支是否有变化,如果有变化的话,执行一次构建。这里设置每60分钟获取一次
Build periodically 设置定时构建,不管代码是够变化,定时构建
使用docker-compose构建
#!/bin/bash
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
echo ---------------Remove-Orphans------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p dockercompose4255153253317384266 down --rmi local --remove-orphans
echo ------------------Config-----------------------
docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 config
echo ------------------Build------------------------
docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 up --build
echo ---------------Publishing...------------------
docker-compose -f "./docker-compose.yml" -f "./docker-compose.override.yml" -p dockercompose4255153253317384266 up -d --build
发布成功,输入地址端口就可以访问,在服务器后台需要将端口开放出来