部署docker-consul群集,Harbor構建Docker私有倉庫
文章目錄
部署docker-consul群集,Harbor構建Docker私有倉庫
瞭解Harvor
- Harbor是VMware公司開源的企業級Docker Registry專案
- Harbor的優勢
●基於角色控制
●基於映象的複製策略
●支援LDAPIAD
●影像刪除和垃圾收集
●圖形U
●審計
●RESTful API
案例概述
- 最近創鑫公司又提出一個新需求,將專案全部打包成鏡
像部署私有倉庫服務,經過幾輪商討,最終選擇
Docker Harbor - Docker Harbor有視覺化的Web管理介面,可以方便
管理Docker映象,又提供了多個專案的映象許可權管理
及控制功能
瞭解基礎名稱
Proxy
●通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,並將請求轉發給後端不同的服務
Registry
●負責儲存Docker映象,並處理docker push/pull命令
Core services
●Harbor的核心功能,包括UI、webhook、token服務
Database
●為core services提供資料庫服務
Log collector
●負責收集其他元件的log,供日後進行分析
Harbor可選引數
●電子郵件設定、harbour_admin_password、auth_mode
●self_registration、token_expiration
●oproject_creation_restriction、verify_remote_cert
啟動並安裝Harbor
Docker consul服務瞭解
Consul是一個分散式、高可用的系統,是一個為了解決在生產環境中服務註冊,服務發現,服務配置的一個工具,它有多個元件,提供如下幾個關鍵功能:
- 服務發現: Consul的某些客戶端可以提供一個服務,例如api或者mysql,其它客戶端可以使用Consul去發現這個服務的提供者。使用DNS或者HTTP,應用可以很容易的找到他們所依賴的服務。
- 健康檢查: Consul客戶端可以提供一些健康檢查,這些健康檢查可以關聯到一個指定的服務(服務是否返回200 OK),也可以關聯到本地節點(記憶體使用率是否在90%以下)。這些資訊可以被一個操作員用來監控叢集的健康狀態,被服務發現元件路由時用來遠離不健康的主機。
- 鍵值儲存: 應用可以使用Consul提供的分層鍵值儲存用於一些目的,包括動態配置、特徵標記、協作、leader選舉等等。通過一個簡單的HTTP API可以很容易的使用這個元件。
- 多資料中心: Consul對多資料中心有非常好的支援,這意味著Consul使用者不必擔心由於建立更多抽象層而產生的多個區域。
容器跟新拓撲圖
需要一下服務
- Consul-Template是一個守護程式,用於實時查詢Consu叢集資訊
- docker-compose非常適合組合使用多個容器進行開發的場景
- Docker consul容器服務更新與發現
- Gliderlabs/Registrator可以檢查容器執行狀態自動註冊,還可以登出
案例需要
-
實現單機網路下容器與容器之間互通
-
使用Docker compose建立容器
-
搭建Consul服務實現自動發現和更新
部署Harbor服務過程
安裝docker-compose
[root@localhost ~]# chmod +x docker-compose
系統可以識別
mv docker-compose /usr/local/bin/
檢視是否安裝
[root@localhost ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
安裝harbor
[root@localhost ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
修改配置檔案
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# vim harbor.cfg
5 hostname = 192.168.136.81
開啟Harbor
[root@localhost harbor]# sh install.sh
輸入地址檢視
密碼Harbor12345預設
新增專案
開啟kgc沒有建立映象
新增映象倉庫
登入
[root@localhost harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1
下載映象
[root@localhost harbor]# docker pull nginx
打標籤
上傳映象到Harbor
[root@localhost harbor]# docker tag nginx:latest 127.0.0.1/kgc/nginx:v1
上傳映象
[root@localhost harbor]# docker push 127.0.0.1/kgc/nginx
不是本地上傳映象操作
在開啟一臺服務端192.168.136.30
[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.136.81
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.136.81/v2/: dial tcp 192.168.136.81:443: connect: connection refuse
以上操作拒絕是因為互動預設使用HTPS但是私有預設使用的是HTTP服務
解決方法(下面都指向對方地址)
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
14 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.136.81
重啟服務
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
登入到Harbor
docker login -u admin -p Harbor12345 http://192.168.136.81
下載centos:7
[root@localhost ~]# docker pull centos:7
標籤
[root@localhost ~]# docker tag centos:7 192.168.136.81/kgc/centos7:v1
上傳映象
[root@localhost ~]# docker push 192.168.136.81/kgc/centos7
遊覽器檢視
在使用者端操作
退出和登入
[root@localhost ~]# docker logout 192.168.136.81
[root@localhost ~]# docker login 192.168.136.81
移除Harbor所有容器清除
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost ~]# docker-compose down -v
部署Docker consul群集實驗過程
實驗前提2臺伺服器
服務端:192.168.136.81 需要配置軟體:Docker,docker-compose Docker consul
服務端:192.168.136.30 需要配置軟體:Docker,Gliderlabs/Registrator,consul-template
實驗目的:
安裝部署docker-compose
在192.168.136.81中配置docker-compose非常適合組合使用多個容器進行開發的場景
匯入docker-compose 模板
[root@localhost ~]# chmod +x docker-compose
讓系統識別
[root@localhost ~]# mv docker-compose /usr/local/bin/
配置Docker consul服務
Docker consul容器服務更新與發現
[root@localhost ~]# mkdir consul
[root@localhost ~]# cd consul/
解壓consul服務包
[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip
讓系統識別
[root@localhost consul]# mv consul /usr/bin/
配置服務軟體
[root@localhost consul]# consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.136.81 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
解釋
[root@localhost consul]# consul agent \ 安裝agnt
-server \ 安裝server
-bootstrap \ 選舉
-ui \ 網頁檢視
-data-dir=/var/lib/consul-data \ 資料存放位置
-bind=192.168.136.81 \ 繫結自己地址
-client=0.0.0.0 \ 監聽地址
-node=consul-server01 &> /var/log/consul.log & 在本地定義名稱
檢視群集資訊
[root@localhost consul]# consul members
Node Address Status Type Build Protocol DC
[root@localhost consul]# consul info | grep leader
leader = true
leader_addr = 192.168.136.81:8300
通過httpd api 獲取群集資訊
curl 127.0.0.1:8500/v1/status/peers
群集Raf leader
curl 127.0.0.1:8500/v1/status/leader
檢視服務
[root@localhost consul]# curl 127.0.01:8500/v1/catalog/services
群集節點資訊資訊
[root@localhost consul]# curl 127.0.01:8500/v1/catalog/nodes
開啟遊覽器檢視節點管理頁面
輸入地址192.168.136.81:8500
安裝Gliderlabs/Registrator
在192.168.136.30容器安裝Gliderlabs/Registrator
可以檢查容器執行狀態自動註冊,還可以登出
[root@localhost consul]# docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.136.30 \
consul://192.168.136.81:8500
解釋
[root@localhost consul]# docker run -d \ 以容器執行registrator
--name=registrator \ 名稱
--net=host \ 僅主機
-v /var/run/docker.sock:/tmp/docker.sock \ 建立資料卷
--restart=always \ 重啟策略
gliderlabs/registrator:latest \ 下載映象
-ip=192.168.136.30 \ 自己的ip
consul://192.168.136.81:8500 指向服務ip
測試服務發現是否功能正常
docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
[root@localhost ~]# docker run -itd -p:88:80 --name test-03 -h test03 httpd
[root@localhost ~]# docker run -itd -p:89:80 --name test-04 -h test04 httpd
驗證httpd和nginx服務是否註冊到consul
在consul服務端檢視服務
[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"httpd":[],"nginx":[]}[root@localhost consul]#
安裝consul-template
Consul-Template是一個守護程式,用於實時查詢Consu叢集資訊,
並更新檔案系統上任意數量的指定模板,生成配置檔案。更新完成以後,
可以選擇執行shell命令執行更新操作,重新載入Nginx。Consul-Template
可以查詢Consul中的服務目錄、Key.Key-values等。
這種強大的抽象功能和查詢語言模板可以使Consul-Template特別適合動態的建立配置檔案。
例如∶建立Apache/Nginx Proxy Balancers、Haproxy Backends
準備template nginx模板
[root@localhost consul]# vim nginx.ctmpl
upstream http_backend {
{{range service "nginx"}}
server {{.Address}}:{{.Port}};
{{end}}
}
server {
listen 83;
server_name localhost 192.168.136.81;
access_log /var/log/nginx/kgc.cn-access.log;
index index.html index.php;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_backend;
}
}
編譯安裝nginx
yum install -y gcc gcc-c++ pcre-devel zlib-devel
cd /opt
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.12.0]# make && make install
修改配置檔案
[root@localhost conf]# cd /usr/local/nginx/conf/
18 include mime.types;
19 include vhost/*conf; 新增
20 default_type application/octet-stream;
建立vhost目錄和日誌
[root@localhost conf]# mkdir /usr/local/nginx/conf/vhost
[root@localhost conf]# mkdir /var/log/nginx
開啟服務
[root@localhost conf]# /usr/local/nginx/sbin/nginx
檢視不到83埠號,因為沒有配置template
配置開啟template
template是跟新模板資訊
配置生成檔案
[root@localhost conf]# cd /root/consul/
[root@localhost consul]# unzip consul-template_0.19.3_linux_amd64_\(1\).zip
讓系統可以識別
[root@localhost consul]# mv consul-template /usr/local/bin/
配置監控(保持一直監控狀態)
consul-template -consul-addr 192.168.136.81:8500 \
-template
重啟開啟終端檢視配檔案檢視是否生成
檢視日誌
重新整理網頁192.168.136.81:83在192.168.136.30中檢視日誌,可以看到埠可以訪問
[root@localhost ~]# docker logs -f test-01
[root@localhost ~]# docker logs -f test-02
相關文章
- Docker--harbor私有倉庫部署與管理Docker
- Docker搭建Harbor私有倉庫Docker
- Docker私有倉庫之Harbor神器Docker
- Docker-------私有倉庫 Harbor 的搭建Docker
- Docker搭建私有倉庫Registry&HarborDocker
- 手把手教你搭建Docker私有倉庫HarborDocker
- 容器技術之Docker私有映象倉庫harborDocker
- Harbor-私有映象倉庫的安裝部署
- 微服務探索之路03篇-docker私有倉庫Harbor搭建+Kubernetes(k8s)部署私有倉庫的映象微服務DockerK8S
- 【Harbor學習筆記】-教你快速搭建Docker私有倉庫筆記Docker
- containerd 配置使用私有映象倉庫 harborAI
- 私有Docker倉庫Docker
- CentOS部署Harbor映象倉庫CentOS
- 在Linux系統上部署docker私有倉庫LinuxDocker
- 私有化輕量級持續整合部署方案--06-私有映象倉庫-Harbor
- docker搭建私有倉庫Docker
- Docker信任私有倉庫Docker
- Docker建立私有倉庫Docker
- docker 私有倉庫搭建Docker
- 用 Docker 部署前端?你有私有映象倉庫嗎Docker前端
- 用Docker搭建cnpm私有倉庫以及私有倉庫的使用DockerNPM
- 程式設計師都在學的docker--搭建harbor私有倉庫與管理程式設計師Docker
- Docker registry私有倉庫(七)Docker
- Docker企業級映象倉庫HarborDocker
- docker的企業級倉庫-harborDocker
- Docker入門-搭建docker私有倉庫Docker
- Centos7安裝docker倉庫HarborCentOSDocker
- Kunbernetes-基於Nexus構建私有映象倉庫
- 使用 docker + verdaccio 搭建npm私有倉庫DockerNPM
- docker使用容器搭建本地私有倉庫Docker
- Docker基礎-搭建本地私有倉庫Docker
- Docker倉庫之Harbor企業級映象倉庫的搭建與使用Docker
- windows系統用docker構造映象上傳私有倉庫WindowsDocker
- Docker倉庫之Registry私有映象倉庫的搭建與使用Docker
- docker筆記37-docker私有倉庫的搭建Docker筆記
- Jenkins打Docker映象推送到私有倉庫JenkinsDocker
- GitLab私有倉庫概述及環境部署Gitlab
- 搭建Harbor 映象倉庫