使用 Jenkins 自动部署 Docker 服务(一、Jenkins 搭建篇)

直接使用 Jenkins 官方的镜像一般会有两个问题导致不能正常自动部署基于 Docker 的服务。

存在的问题

  • 官方的镜像默认不是使用 root 账号,虽然 Jenkins 可以正常启动,但是因为没有权限导致不能向宿主机写文件
  • Jenkins 基于 Docker 搭建,虽然 Jenkins 同样可以正常启动,但不能在容器内部随意使用 Docker

准备工作

安装 docker、安装 pip、安装 docker-compose

问题一 解决

重新创建镜像修改为 root 用户,安装 docker 依赖库(问题二解决)

Dockerfile

FROM jenkins/jenkins:2.137
MAINTAINER kwkw "kwkw@example.com"
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 服务(二、构建部署篇)

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值