直接使用 Jenkins 官方的鏡像通常會有兩個問題致使不能正常自動部署基於 Docker 的服務。java
安裝 docker、修改 docker 鏡像倉庫、安裝 pip、安裝 docker-compose
# 若是以爲麻煩能夠用這個部署輔助工具自動完成 git clone https://github.com/kwkwc/dockerSH.git # 進入工具目錄並自動部署 cd dockerSH && ./deploy.sh
從新建立鏡像修改成 root 用戶,安裝 docker 依賴庫(問題二解決)
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,其餘環境未測試)
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
docker-compose up -d
http://127.0.0.1:8080
請根據 docker-compose.yml 裏面填寫的掛載路徑查找
通常咱們選擇安裝推薦的插件,可是由於默認插件源在國外,速度很是慢並且安裝失敗率高,因此請自行查找特殊辦法
若是已經搭建好能夠使用 Docker 的 Jenkins,請移步到這篇文章git