[TOC]
Harbor作為鏡像倉庫,主要的交互方式就是將鏡像上傳到Harbor上,以及從Harbor上下載指定鏡像
在傳輸鏡像前,可以先使用Harbor提供的權限管理,將項目設置為私有項目,并對不同用戶設置不同角色,從而更方便管理鏡像。
### harbor添加用戶
* 創建用戶
| 創建用戶 |
| --- |
| |
* 構建項目(設置為私有)
| 構建項目 |
| --- |
| |
* 給項目追加用戶
| 追加用戶管理 |
| --- |
|  |
* 切換測試用戶
| 切換測試用戶 |
| --- |
|  |
### 發布鏡像到Harbor
* 修改鏡像名稱
名稱要求:harbor地址/項目名/鏡像名:版本
| 修改鏡像名稱 |
| --- |
|  |
* 修改daemon.json,支持Docker倉庫,并重啟Docker
| 修改daemon.json,支持Docker倉庫 |
| --- |
|  |
* 設置登錄倉庫信息
~~~
docker login -u 用戶名 -p 密碼 Harbor地址
~~~
* 推送鏡像到Harbor
| 推送鏡像到Harbor |
| --- |
|  |
|  |
### 從Harbor拉取鏡像ls
跟傳統方式一樣,不過需要先配置/etc/docker/daemon.json文件
~~~
{
? ? ? ?"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
? ? ? ?"insecure-registries": ["192.168.11.11:80"]
}
~~~
| 拉取鏡像 |
| --- |
| |
### Jenkins容器使用宿主機Docker
構建鏡像和發布鏡像到harbor都需要使用到docker命令。而在Jenkins容器內部安裝Docker官方推薦直接采用宿主機帶的Docker即可。
設置Jenkins容器使用宿主機Docker
* 設置宿主機docker.sock權限:
~~~
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock
~~~
* 添加數據卷
~~~
version: "3.1"
services:
jenkins:
? image: jenkins/jenkins
? container_name: jenkins
? ports:
? ? - 8080:8080
? ? - 50000:50000
? volumes:
? ? - ./data/:/var/jenkins_home/
? ? - /usr/bin/docker:/usr/bin/docker
? ? - /var/run/docker.sock:/var/run/docker.sock
? ? - /etc/docker/daemon.json:/etc/docker/daemon.json
~~~
### 添加構建操作
| 制作自定義鏡像 |
| --- |
| |
### 編寫部署腳本
部署項目需要通過Publish Over SSH插件,讓目標服務器執行命令。為了方便一次性實現拉取鏡像和啟動的命令,推薦采用腳本文件的方式。
添加腳本文件到目標服務器,再通過Publish Over SSH插件讓目標服務器執行腳本即可。
* 編寫腳本文件,添加到目標服務器
~~~
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5
?
imageName=$harbor_url/$harbor_project_name/$project_name:$tag
?
containerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
? docker stop $containerId
? docker rm $containerId
? ?echo "Delete Container Success"
fi
?
imageId=`docker images | grep ${project_name} | awk '{print $3}'`
?
if [ "$imageId" != "" ] ; then
? docker rmi -f $imageId
? ?echo "Delete Image Success"
fi
?
docker login -u DevOps -p P@ssw0rd $harbor_url
?
docker pull $imageName
?
docker run -d -p $port:$port --name $project_name $imageName
?
echo "Start Container Success"
echo $project_name
~~~
并設置權限為可執行
~~~
chmod a+x deploy.sh
~~~
| 如圖 |
| --- |
|  |
### 配置構建后操作
| 執行腳本文件 |
| --- |
|  |
- DevOps介紹
- 持續集成流程
- git工作流實踐
- 新人準備git環境
- git工作流最佳實踐
- jenkins基礎入門
- jenkins簡介
- jenkins安裝(docker)
- 源碼拉取
- maven構建
- 應用發布
- 結合gitlab版本管理
- jenkins-docker部署
- harbor鏡像發布
- jenkins集成SonarQube
- SonarQube代碼檢測
- 集成SonarQube
- jenkins-pipeline
- 構建pipeline任務
- pipeline基礎結構
- pipeline核心語法
- jenkinsfile構建
- 完整案例
- 整合釘釘發送通知
- 腳本使用憑證信息
- jenkins結合k8s使用
- k8s架構及基礎概念
- k8s操作命令
- jenkins部署k8s
- 附錄(其他未完成)
- jenkins高可用服務搭建
- gitlab-docker環境搭建
- 開發人員安裝git
- JDK與maven
- docker安裝gitlab
- docker安裝
- docker-compose安裝
- harbor安裝
- SonarQube安裝
- 2.暫時沒寫的內容
- 構建結果郵件發送
- 已有項目上傳gitlab