使用 docker-compose 快速安裝Jenkins

本文分享在 docker 環境中,使用 docker-compose.yml 快速安裝 Jenkins,以及使用主機中的 docker 打包推送鏡像到阿里雲
博客園的第100篇文章達成,2019的第一篇文章,新的開始,新的征程,一起迎接嶄新的世界。

系統環境:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

當前 docker 版本:Docker version 18.09.0
當前 docker-compose 版本:docker-compose version 1.23.2

docker-compose.yml

version: '3'
services:
  docker_jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: docker_jenkins
    ports:
      - '8080:8080'
      - '50000:50000'
    volumes:
      - ./data/:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

創建 data 目錄並設置權限

  • mkdir ./data
  • sudo chown -R 1000 ./data //把當前目錄的擁有者賦值給uid 1000
    若已啓動則需要重建下服務

構建Jenkins服務

docker-compose up -d

...訪問 http://ip:8080 進行初始化...

jenkins在docker中安裝後查看登錄令牌

使用命令 docker logs 容器名稱/容器ID 查看訪問日誌,即可查看到登錄令牌

若未設置賬戶,如何查看admin的密碼

一不小心,未創建新的賬戶,可通過查看掛載目錄下的 /secrets/initialAdminPassword 中的 Key 作爲密碼登錄
賬戶:admin
密碼:cat ./data/secrets/initialAdminPassword

docker build 無權限的解決辦法

在 docker-compose.yml 已將主機 docker 映射到容器內,故使用 docker -v 已經能夠查看到版本號

+ docker -v
Docker version 18.09.0, build 4d60db4
+ docker build -t test/test.admin.vue:v3 .
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=c0j8whn50ubpyukeblzkng7cq&shmsize=0&t=test%2Ftest.admin.vue%3Av3&target=&ulimits=null&version=1: dial unix /var/run/docker.sock: connect: permission denied
Build step 'Execute shell' marked build as failure

但是當使用 docker build -t . 命令的時候依舊無法執行,提示無權限(permission denied)
這個問題之前將Jenkins直接裝在linux主機的時候也遇到過,在shell腳本輸入框頂部加上 #!/bin/bash -ilex 即可

#!/bin/bash -ilex
+ docker -v
Docker version 18.09.0, build 4d60db4
+ export DOCKER_IMAGE_NAME=test/test.admin.vue:v3
+ docker build -t test/test.admin.vue:v3 .

關於 docker 鏡像的構建

註冊阿里雲賬號,並申請阿里雲的容器鏡像服務,創建命名空間(公/私有,可自動創建倉庫),設置下 Registry 登錄密碼,隨便新建一個倉庫,查看倉庫詳情可查看推送 docker 的相關信息
創建好賬號信息後,即可在 Jenkins 中構建推送。
可參考以下腳本,腳本環境變量說明
DOCKER_IMAGE_NAME:鏡像名稱(命名空間/鏡像名:版本號)
DOCKER_CLOUD_URL: 鏡像源
ALIYUN_USERNAME:阿里雲用戶名
ALIYUN_USERPWD:阿里雲 Docker Registry 密碼

#!/bin/bash -ilex
docker -v
echo '打包鏡像'
export DOCKER_IMAGE_NAME=test/$JOB_NAME:v$BUILD_NUMBER
docker build -t $DOCKER_IMAGE_NAME .

echo '推送鏡像'
export DOCKER_CLOUD_URL=registry.cn-hangzhou.aliyuncs.com

docker login --username=$ALIYUN_USERNAME --password=$ALIYUN_USERPWD $DOCKER_CLOUD_URL

docker tag $DOCKER_IMAGE_NAME $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME
docker push $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME

echo '刪除鏡像'
docker rmi $DOCKER_IMAGE_NAME
docker rmi $DOCKER_CLOUD_URL/$DOCKER_IMAGE_NAME

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章