使用 Jenkins 自动部署 Docker 服务(一、Jenkins 搭建篇)
直接使用 Jenkins 官方的镜像一般会有两个问题导致不能正常自动部署基于 Docker 的服务。
存在的问题
- 官方的镜像默认不是使用 root 账号,虽然 Jenkins 可以正常启动,但是因为没有权限导致不能向宿主机写文件
- Jenkins 基于 Docker 搭建,虽然 Jenkins 同样可以正常启动,但不能在容器内部随意使用 Docker
准备工作
安装 docker、修改 docker 镜像仓库、安装 pip、安装 docker-compose
# 如果觉得麻烦可以用这个部署辅助工具自动完成 git clone https://github.com/kwkwc/dockerSH.git # 进入工具目录并自动部署 cd dockerSH && ./deploy.sh
问题一 解决
重新创建镜像修改为 root 用户,安装 docker 依赖库(问题二解决)
Dockerfile
FROM jenkins/jenkins:2.137 MAINTAINER kwkw "[email protected]" ENV REFRESHED_AT 2018-08-13 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 # 安装 docker 依赖库 RUN apt update && apt install -y libltdl7
创建新镜像
docker build -t kwkw/jenkins:2.137 .
问题二 解决
将宿主机的 Docker 程序挂载到 Jenkins 容器内部(宿主机环境为 Ubuntu 16.04,其他环境未测试)
docker-compose.yml
version: '2' services: jenkins: restart: always image: kwkw/jenkins:2.137 container_name: jenkins expose: - "8080" - "50000" ports: - "8080:8080" - "50000:50000" environment: JAVA_OPTS: "-Djava.awt.headless=true -Duser.timezone=Asia/Shanghai" volumes: - /var/run/docker.sock:/var/run/docker.sock # 将宿主机的 Docker 程序挂载到 Jenkins 容器内部 - /usr/bin/docker:/usr/bin/docker:ro - ../data/jenkins:/var/jenkins_home
启动 Jenkins
docker-compose up -d
浏览器打开
http://127.0.0.1:8080
初次使用需要填写密钥
请根据 docker-compose.yml 里面填写的挂载路径查找
安装
一般我们选择安装推荐的插件,但是因为默认插件源在国外,速度非常慢而且安装失败率高,所以请自行查找特殊办法
创建管理员用户
搭建完成
如果已经搭建好可以使用 Docker 的 Jenkins,请移步到这篇文章
使用 Jenkins 自动部署 Docker 服务(二、构建部署篇)
相关推荐
ppppfly 2020-10-24
synshitou 2020-10-21
programmeryu 2020-09-24
Topbeyond 2020-08-21
oden 2020-08-16
lrcoop 2020-08-15
pandaphinex 2020-08-09
jingzhaopan 2020-07-08
CloasGao 2020-07-05
花落兰亭 2020-07-04
xiongyouqiang 2020-06-28
jingzhaopan 2020-06-27
nanbiebao 2020-06-20
nanbiebao 2020-06-20
lrcoop 2020-06-13
xiaodaiwang 2020-06-12
pursuemylife 2020-08-14