部署docker-consul群集,Harbor构建Docker私有仓库
文章目錄
- 部署docker-consul群集,Harbor構建Docker私有倉庫
- 了解Harvor
- 案例概述
- Docker consul服務了解
- 部署Harbor服務過程
- 不是本地上傳鏡像操作
- 在用戶端操作
- 部署Docker consul群集實驗過程
- 安裝部署docker-compose
- 配置Docker consul服務
- 安裝Gliderlabs/Registrator
- 安裝consul-template
- 準備template nginx模板
- 編譯安裝nginx
- 配置開啟template
- 查看日志
部署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的前提下部署的!!!
安裝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 leaderleader = trueleader_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 nginxdocker 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-consul群集,Harbor构建Docker私有仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: x99内存性能揭秘:游戏加载速度惊人提升
- 下一篇: ddr4内存单条最大支持128GB?别急