1. 程式人生 > >使用 Jenkins 自動部署 Docker 服務(一、Jenkins 搭建篇)

使用 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

瀏覽器開啟

這裡寫圖片描述

初次使用需要填寫金鑰

請根據 docker-compose.yml 裡面填寫的掛載路徑查詢

這裡寫圖片描述

安裝

一般我們選擇安裝推薦的外掛,但是因為預設外掛源在國外,速度非常慢而且安裝失敗率高,所以請自行查詢特殊辦法

這裡寫圖片描述

建立管理員使用者

這裡寫圖片描述

搭建完成

這裡寫圖片描述

如果已經搭建好可以使用 Docker 的 Jenkins,請移步到這篇文章

相關推薦

使用 Jenkins 自動部署 Docker 服務Jenkins 搭建

直接使用 Jenkins 官方的映象一般會有兩個問題導致不能正常自動部署基於 Docker 的服務。 存在的問題 官方的映象預設不是使用 root 賬號,雖然 Jenkins 可以正常啟動,但是因為沒有許可權導致不能向宿主機寫檔案 Jenkins 基於

Jenkins教程——從安裝到部署Docker服務安裝Jenkins

前言 寫了好久Jenkins的指令碼了,寫得雖然不是太好,但是可以基本滿足需要,最近比較忙,這個月也沒怎麼更新部落格,開始更新Jenkins這個系列的文章,打算從安裝Jenkins -> 流水線工程HelloWorld->宣告式流水線語法 -> 流水線構建微服務映象並部署 ,大體上會分這幾部

Zookeeper學習Linux搭建zookeeper

1.zookeeper單機搭建 下載:wget http://mirrors.shu.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz 解壓:tar -zxvf zookeeper-3.4.12.tar.gz 配置檔案

RK3288 平臺Android 5.1+ PN548 除錯流水賬前期編譯

一、獲取原始碼 客戶向瑞芯微技術視窗申請SDK 二、SDK 編譯 1.JDK 安裝 Android5.1 系統編譯依賴於 JDK7。 編譯之前需安裝 JDK7,並配置 JAVA 環境變數。例如, 安裝路徑為/usr/lib/jvm/java

Chrome開發者工具不完全指南基礎功能

  就算你不是一名前端開發工程師,相信你也不會對Chrome瀏覽器感到陌生。根據最新的一份(2015/06)的瀏覽器市場佔有率報告,Chrome近乎佔有瀏覽器天下的半壁江山。簡單、快捷使它成為了新時代人們的新寵。如果你是一名web開發人員,我推薦你使用Chrome。作為前端開發的"IDE",你只需要搭配一個編

Jenkins教程——從安裝到部署Docker服務宣告式流水線HelloWorld

前言 本文通過一個宣告式流水線的HelloWorld程式做一下流水線基礎入門,對常用的流水線引數進行簡要說明 什麼是流水線 現實中的流水線 流水線比較好理解,類比於現實生活中的生產流水線,每個流程只做一件事,通過傳送帶把這些流程連線在一起,一個流程完成後的結果交由後續流程繼續操作。 Jenkins的流水線簡單

部署WSUS服務

發展 影響 理論 操作系統 服務器配置信息 除了 升級 環境 存儲文件 引言:隨著網絡的發展,我們的生活也越來越離不開網絡,但面臨的安全威脅也越來越多。像去年爆發的針對Windows系統的勒索病毒(Wanna Cry)和年初爆發的Intel芯片漏洞告訴我們網絡威脅

在Windows系統上安裝Jenkins ---- Jenkins自動化部署學習筆記

  之前一直想著學習一下Jenkins自動化部署,最近剛好有點時間,就利用這點時間來學習一下Jenkins自動化部署,做個筆記,既可以鞏固自己的學習,也可以幫助更多的人瞭解Jenkins自動化部署。   先從簡單的開始,我們先用Windows系統來安裝Jenkins,當然以後肯定會在

解決Jenkins自動部署Docker出現unix://localhost:80: Permission denied

jenkins使用docker-maven-plugin或者dockerfile-maven-plugin進行編譯時發現沒有許可權,具體錯誤內容如下: [INFO] I/O exception (java.io.IOException) caught when processing reques

如何使用Azure Container Service Engine在Azure中國區部署容器服務:DC/OS

前言 什麼是Azure Container Service(簡稱ACS) 目前越來越多的企業正在嘗試使用容器來構建他們的服務,他們或者在自己的本地資料中心搭建基於容器的叢集,或者利用公有云來承載基於容器和微服務的叢集架構,然而很多企業發現搭建一套能夠適用

Java編程思想對象導論

java源碼 簡單的 java java語言 綁定 收集 無法訪問 學習 內存池    記錄學習中的思考。主要為了幫助自己鞏固所學知識,也希望能通過自己的總結,為java初學者提供一些啟發。痛並快樂著,堅持就好。    一開始在各種大牛的網上博客上看到推薦《Java編程

從零開始搭建自己的VueJS2.0+ElementUI單頁面網站環境搭建

如圖所示 增刪改 type default sdn orm rain exp 名稱 原網址:https://blog.csdn.net/u012907049/article/details/72764151 前言 VueJS可以說是近些年來最火的前端框架之一,越來越多的

一個線上音樂軟體的故事故事的由來

這篇文章是講一款線上音樂播放軟體的開發過程,是我寫完這個軟體後的一些總結,我把它寫成了一則小故事,故事把開發過程中的重點部分寫了出來,有些細節的內容還是需要看原始碼。希望這則故事對已經有一些程式設計基礎,想繼續深入學習Python的童鞋起到拋磚引玉的作用。 很久很久以前,故事的由來

雲伺服器linux系統啟動web專案環境配置_jdk下載安裝

官網下載jdk(linux)  檢視linux 多少位 命令:getconf LONG_BIT    下載對應jdk 1.上傳壓縮包            cd ..回

linux指令目錄與檔案

一、文件與目錄 1.Linux檔案屬性 第一個字元代表這個檔案是『目錄、檔案或連結檔等等』: 當為[ d ]則是目錄; 當為[ - ]則是檔案; 若是[ l ]則表示為連結檔(

深入理解jvmubuntu16編譯openjdk8

1.安裝Bootstrap JDK 直接執行命令: sudo apt-get install openjdk-7-jre sudo apt-get install openjdk-7-jdk 如果出現“沒有可用的軟體包 openjdk-7-jdk,但是它被其它的軟體包引用了。這可能意味著

python3 web框架之Djangoweb框架---本質

首先,不得不說,web框架的根源就是socket! 先上程式碼 import socket def handle_request(Client): msg = Client.recv(1024) Client.send(bytes("HTTP/1.1

SpringMVC學習筆記環境搭建

SpringMVC主要功能 在獲取多個引數、檔案上傳、servlet功能單一方面都有很好的解決辦法 SpringMVC 環境搭建 構建一個空的WEB專案(記住勾選xml檔案) 匯入所需jar包 書寫主配置檔案: 建立resource資料夾 建立spring

Angular+Rxjs+Redux環境搭建

環境搭建 1.node 2.npm [email protected]/cli 4.json-server(npm install -g json-server) 執行json-server

從零開始學USB基礎知識1

1.什麼是USB? USB是Universal Serial Bus的縮寫,中文譯為通用序列匯流排。 正如USB的第一個單詞表述的那樣,為了通用。 那麼我們看一下,還有哪些匯流排不是序列的,哪些是不通用的序列匯流排 下表來自《USB Complete》裡面對一些常見匯流排所總結的