Docker 部署Jenkins
一、准备镜像
1、获取Jenkins最新的维护版本镜像
docker pull jenkins/jenkins:2.277.1
2、打标签
docker tag a470e85971b2 192.168.43.33/infra/jenkins:v01
3、保存到仓库
docker push 192.168.43.33/infra/jenkins:v01
4、容器的生命周期
- 检查本地是否存在镜像,如果不存在即从远端仓库检索
- 利用镜像启动容器
- 分配一个文件系统,并在只读的镜像层外挂载一层可读写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器
- 从地址池配置一个ip地址给容器
- 执行用户指定的指令
- 执行完毕后容器终止
二、自定义Dockerfile
创建Jenkins的Dockerfile
mkdir -p /data/dockerfile/jenkins
cd /data/dockerfile/jenkins
vi Dockerfile
粘贴下面的配置
FROM 192.168.43.33/infra/jenkins:v01
USER root
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
echo 'Asia/Shanghai' >/etc/timezone
ADD id_rsa /root/.ssh/id_rsa
ADD config.json /root/.docker/config.json
ADD get-docker.sh /get-docker.sh
RUN echo "StricHostKeyChecking no" >> /etc/ssh_config &&\
/get-docker.sh
- 设置容器用户为root
- 设置容器内的时区
- 将ssh私钥加入 (使用git拉代码时要用到,配对的公钥应配置在gitlab中)
- 加入了登录自建harbor仓库的config文件
- 修改了ssh客户端配置
- 安装了一个docker的客户端
生成SSH密钥对:
//用自己的邮箱
ssh-keygen -t rsa -b 2048 -C "Albatross7@163.com" -N "" -f /root/.ssh/id_rsa
查看
cd ~/.ssh
ls(查看目录是否有id_rsa.pub文件)
查看公钥:cat id_rsa.pub 或者vim id_rsa.pub
cat /root/.ssh/id_rsa.pub
准备配置文件
cd /data/dockerfile/jenkins
cp /root/.ssh/id_rsa .
//这里的内容有点不同
cp /root/.docker/config.json .
vi config.json
需要配置私人harbor仓库
{
"auths": {
"192.168.43.33": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
}
}
curl -fsSL get.docker.com -o get-docker.sh
chmod +x get-docker.sh
三、制作自定义镜像
- 本地构建镜像
//后期harbor仓库路径需要改 harbor/infar/jenkins:v2.277.1_cfit
docker build /data/dockerfile/jenkins -t 192.168.43.33/infra/jenkins:v10
- 上传至docker仓库
docker push 192.168.43.33/infra/jenkins:v10
- 测试Jenkins与Gitlab的连接(需要在Gitlab配置公钥)
docker run --rm 192.168.43.33/infra/jenkins:v10 ssh -i /root/.ssh/id_rsa -T git@gitlab.com
目前连接不上