docker私用鏡像倉(cāng)庫(kù)Harbor部署

docker私用鏡像倉(cāng)庫(kù)Harbor部署

1. 安裝docker-compose

cd /usr/local/bin

# 下載docker-compose
wget https://zwfile.yonyougov.tech/share/crux-tools/docker-compose

# 賦予docker-compose 可執(zhí)行權(quán)限
chmod +x docker-compose

# 驗(yàn)證
docker-compose -v
# docker-compose常用命令

docker-compose up -d nginx                    # 構(gòu)建建啟動(dòng)nignx容器
docker-compose exec nginx bash                # 登錄到nginx容器中
docker-compose down                           # 刪除所有nginx容器,鏡像
docker-compose ps                             # 顯示所有容器
docker-compose restart nginx                  # 重新啟動(dòng)nginx容器
docker-compose run --no-deps --rm php-fpm php -v  #在php-fpm中不啟動(dòng)關(guān)聯(lián)容器,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器
docker-compose build nginx                    #構(gòu)建鏡像 蝌焚。        
docker-compose build --no-cache nginx         #不帶緩存的構(gòu)建啥纸。
docker-compose logs  nginx                    #查看nginx的日志 
docker-compose logs -f nginx                  #查看nginx的實(shí)時(shí)日志

docker-compose config  -q                     #驗(yàn)證(docker-compose.yml)文件配置号杏,當(dāng)配置正確時(shí),不輸出任何內(nèi)容斯棒,當(dāng)文件配置錯(cuò)誤盾致,輸出錯(cuò)誤信息。 
docker-compose events --json nginx            #以json的形式輸出nginx的docker日志
docker-compose pause nginx                    #暫停nignx容器
docker-compose unpause nginx                  #恢復(fù)ningx容器
docker-compose rm nginx                       #刪除容器(刪除前必須關(guān)閉容器)
docker-compose stop nginx                     #停止nignx容器
docker-compose start nginx                    #啟動(dòng)nignx容器

2.安裝Harbor

#1 下載離線安裝包
wget https://github.com/goharbor/harbor/releases/download/v1.10.4/harbor-offline-installer-v1.10.4.tgz

#2 解壓壓縮包
tar -zxvf harbor-offline-installer-v1.10.4.tgz

#3 修改配置文件harbor.yml
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: manager.node  #修改主機(jī)名

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 8089  #修改一個(gè)不會(huì)被占用的

# https related config
# https:  #暫時(shí)注掉
  # https port for harbor, default is 443
  # port: 443 #暫時(shí)注掉
  # The path of cert and key files for nginx
  # certificate: /your/certificate/path  #暫時(shí)不開https注掉
  # private_key: /your/private/key/path  #暫時(shí)不開https注掉

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor12345  #修改密碼荣暮,暫用默認(rèn)
————————————————
版權(quán)聲明:本文為CSDN博主「再看我把你吃掉」的原創(chuàng)文章庭惜,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明穗酥。
原文鏈接:https://blog.csdn.net/zz_aiytag/java/article/details/105702101
#4 執(zhí)行prepare腳本
cd harbor
./prepare

#5 執(zhí)行安裝腳本
sh install.sh

#6 訪問(wèn)harbor
http://ip:port/harbor/

http://10.10.66.49:9081/harbor/sign-in   admin/Harbor12345 yonyou/Yonyou@1988

#7 harbor重啟
 docker-compose down
 # ./prepare  # 如果修改了配置執(zhí)行
 docker-compose up -d

3 docker配置harbor倉(cāng)庫(kù)

# 添加http harbor倉(cāng)庫(kù)訪問(wèn)
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
"insecure-registries": ["10.10.66.49:9081"] #添加這一行
}

4 添加用戶并創(chuàng)建項(xiàng)目护赊,把用戶添加到項(xiàng)目并給予相應(yīng)角色

# harbor admin用戶登錄惠遏,并創(chuàng)建用戶,創(chuàng)建項(xiàng)目骏啰,并把用戶添加到項(xiàng)目中

5 上傳鏡像到harbor

#1 在docker機(jī)器登錄harbor倉(cāng)庫(kù)节吮,會(huì)生成密文保存在/root/.docker/config.json
docker login 10.10.66.49:9081
username:yonyou
password:Yonyou@1988

#2 給已有鏡像打tag
docker tag goharbor/redis-photon:v1.10.4 10.10.66.49:9081/sbfx/redis-photon:v1.10.4

#3 上傳到harbor倉(cāng)庫(kù)
docker push 10.10.66.49:9081/sbfx/redis-photon:v1.10.4

6 下載harbor倉(cāng)庫(kù)鏡像

#1 在docker機(jī)器登錄harbor倉(cāng)庫(kù),只需要執(zhí)行一次判耕,會(huì)生成密文保存在/root/.docker/config.json
docker login 10.10.66.49:9081
username:yonyou
password:Yonyou@1988

#2 拉取鏡像文件
docker pull 10.10.66.49:9081/sbfx/redis-photon:v1.10.4 

7 rancher配置使用harbor倉(cāng)庫(kù)

資源 > 密文 > 鏡像庫(kù)憑證列表

地址:10.10.66.49:9081
用戶名:yonyou
密碼:Yonyou@1988

8 kubectl安裝

# 下載最新版
 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

 # 修改權(quán)限
 chmod +x ./kubectl

 # 將二進(jìn)制移到path下
 sudo mv ./kubectl /usr/local/bin/kubectl

 從rancher獲取kubeconfig
 copy kubeconfig信息 到 ~/.kube/config (沒(méi)有就新建透绩,不然不能訪問(wèn)集群)

8.1 kubectl常用命令

# get 命令的基本輸出
kubectl get services                          # 列出當(dāng)前命名空間下的所有 services
kubectl get pods --all-namespaces             # 列出所有命名空間下的全部的 Pods
kubectl get pods -o wide                      # 列出當(dāng)前命名空間下的全部 Pods,并顯示更詳細(xì)的信息
kubectl get deployment my-dep                 # 列出某個(gè)特定的 Deployment
kubectl get pods                              # 列出當(dāng)前命名空間下的全部 Pods
kubectl get pod my-pod -o yaml                # 獲取一個(gè) pod 的 YAML

# describe 命令的詳細(xì)輸出
kubectl describe nodes my-node
kubectl describe pods my-pod

# 列出當(dāng)前名字空間下所有 Services壁熄,按名稱排序
kubectl get services --sort-by=.metadata.name

# 列出 Pods渺贤,按重啟次數(shù)排序
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'

# 列舉所有 PV 持久卷,按容量排序
kubectl get pv --sort-by=.spec.capacity.storage

# 獲取包含 app=cassandra 標(biāo)簽的所有 Pods 的 version 標(biāo)簽
kubectl get pods --selector=app=cassandra -o \
  jsonpath='{.items[*].metadata.labels.version}'

# 獲取所有工作節(jié)點(diǎn)(使用選擇器以排除標(biāo)簽名稱為 'node-role.kubernetes.io/master' 的結(jié)果)
kubectl get node --selector='!node-role.kubernetes.io/master'

# 獲取當(dāng)前命名空間中正在運(yùn)行的 Pods
kubectl get pods --field-selector=status.phase=Running

# 獲取全部節(jié)點(diǎn)的 ExternalIP 地址
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

# 列出屬于某個(gè)特定 RC 的 Pods 的名稱
# 在轉(zhuǎn)換對(duì)于 jsonpath 過(guò)于復(fù)雜的場(chǎng)合请毛,"jq" 命令很有用志鞍;可以在 https://stedolan.github.io/jq/ 找到它。
sel=${$(kubectl get rc my-rc --output=json | jq -j '.spec.selector | to_entries | .[] | "\(.key)=\(.value),"')%?}
echo $(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name})

# 顯示所有 Pods 的標(biāo)簽(或任何其他支持標(biāo)簽的 Kubernetes 對(duì)象)
kubectl get pods --show-labels

# 檢查哪些節(jié)點(diǎn)處于就緒狀態(tài)
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' \
 && kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"

# 列出被一個(gè) Pod 使用的全部 Secret
kubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq

# 列舉所有 Pods 中初始化容器的容器 ID(containerID)
# Helpful when cleaning up stopped containers, while avoiding removal of initContainers.
kubectl get pods --all-namespaces -o jsonpath='{range .items[*].status.initContainerStatuses[*]}{.containerID}{"\n"}{end}' | cut -d/ -f3

# 列出事件(Events)方仿,按時(shí)間戳排序
kubectl get events --sort-by=.metadata.creationTimestamp

# 比較當(dāng)前的集群狀態(tài)和假定某清單被應(yīng)用之后的集群狀態(tài)
kubectl diff -f ./my-manifest.yaml
=========================================================================================
# 刪除pod和service  名稱為eurekaserver
kubectl delete pod,service eurekaserver --namespace p-pjxvk-pipeline

# 通過(guò)標(biāo)簽刪除pod
kubectl delete pod -l app=eurekaserver --namespace p-pjxvk-pipeline

# 通過(guò)標(biāo)簽刪除deployment
kubectl delete deployment -l app=eurekaserver --namespace p-pjxvk-pipeline

# 指定命名空間
kubectl get pods  --namespace或-n  p-pjxvk-pipeline

# 查看pod
kubectl get pod --namespace p-pjxvk-pipeline

#創(chuàng)建pod
kubectl run myeureka --image=10.10.66.49:9081/sbfx/myeureka:v1.17 --namespace=p-pjxvk-pipeline

#創(chuàng)建deployment
kubectl create deployment myeureka --image=10.10.66.49:9081/sbfx/myeureka:v1.17 --namespace=p-pjxvk-pipeline

#創(chuàng)建deployment
kubectl apply -f deployment.yml

#暴露端口
kubectl expose deploy eurekaserver --port=8791 --target-port=8791 --type=NodePort

#刪除deployment
kubectl delete deploy eurekaserver

#根據(jù)name刪除pod
kubectl delete pod myeureka --namespace p-pjxvk-pipeline

#根據(jù)name刪除deployment
kubectl delete deployment myeureka --namespace=p-pjxvk-pipeline 

#根據(jù)name刪除service
kubectl delete service myeureka --namespace p-pjxvk-pipeline

# 獲取 pod 日志(標(biāo)準(zhǔn)輸出)
kubectl logs my-pod   
# 獲取含 name=myLabel 標(biāo)簽的 Pods 的日志(標(biāo)準(zhǔn)輸出)
kubectl logs -l name=myLabel 
# -f 跟蹤日志   
kubectl logs -f my-pod    

#在pod中執(zhí)行命令
kubectl exec my-pod -- ls /

#進(jìn)入pod交互
kubectl exec -it  eurekaserver-5cd78d7cdb-7bks6 -- bash

# 在本地計(jì)算機(jī)上偵聽端口 5000 并轉(zhuǎn)發(fā)到 my-pod 上的端口 6000
kubectl port-forward eurekaserver-5cd78d7cdb-7bks6 8791:8791   

# 顯示給定 Pod 和其中容器的監(jiān)控?cái)?shù)據(jù)
kubectl top pod eurekaserver-5cd78d7cdb-7bks6 --containers

# 縮放 為 Deployment, ReplicaSet, Replication Controller 或者 Job 設(shè)置一個(gè)新的副本數(shù)量
kubectl scale --replicas=1 deploy/eurekaserver

kubectl scale --replicas=1 rs/eurekaserver

# 查看pod詳情
kubectl describe pod/eurekaserver-5cd78d7cdb-7bks6

# 升級(jí)鏡像 滾動(dòng)升級(jí)固棚,新版本沒(méi)有啟動(dòng)成功不會(huì)停舊版本服務(wù)
kubectl set image deployment/eurekaserver eurekaserver=myeureka:v1.0

kubectl set image deployment/eurekaserver eurekaserver=10.10.66.49:9081/sbfx/myeureka:v1.0 --record=true

# 查看鏡像歷史
kubectl rollout history deploy/eurekaserver

# 回滾到上一版本
kubectl rollout undo deploy/eurekaserver

8.2與資源交互

kubectl logs my-pod                                 # 獲取 pod 日志(標(biāo)準(zhǔn)輸出)
kubectl logs -l name=myLabel                        # 獲取含 name=myLabel 標(biāo)簽的 Pods 的日志(標(biāo)準(zhǔn)輸出)
kubectl logs -f my-pod                              # -f 跟蹤日志                      

kubectl logs my-pod --previous                      # 獲取上個(gè)容器實(shí)例的 pod 日志(標(biāo)準(zhǔn)輸出)
kubectl logs my-pod -c my-container                 # 獲取 Pod 容器的日志(標(biāo)準(zhǔn)輸出, 多容器場(chǎng)景)
kubectl logs -l name=myLabel -c my-container        # 獲取含 name=myLabel 標(biāo)簽的 Pod 容器日志(標(biāo)準(zhǔn)輸出, 多容器場(chǎng)景)
kubectl logs my-pod -c my-container --previous      # 獲取 Pod 中某容器的上個(gè)實(shí)例的日志(標(biāo)準(zhǔn)輸出, 多容器場(chǎng)景)
kubectl logs -f my-pod                              # 流式輸出 Pod 的日志(標(biāo)準(zhǔn)輸出)
kubectl logs -f my-pod -c my-container              # 流式輸出 Pod 容器的日志(標(biāo)準(zhǔn)輸出, 多容器場(chǎng)景)
kubectl logs -f -l name=myLabel --all-containers    # 流式輸出含 name=myLabel 標(biāo)簽的 Pod 的所有日志(標(biāo)準(zhǔn)輸出)
kubectl run -i --tty busybox --image=busybox -- sh  # 以交互式 Shell 運(yùn)行 Pod
kubectl run nginx --image=nginx -n mynamespace      # 在指定名字空間中運(yùn)行 nginx Pod
kubectl run nginx --image=nginx                     # 運(yùn)行 ngins Pod 并將其規(guī)約寫入到名為 pod.yaml 的文件
  --dry-run=client -o yaml > pod.yaml

kubectl attach my-pod -i                            # 掛接到一個(gè)運(yùn)行的容器中
kubectl port-forward my-pod 5000:6000               # 在本地計(jì)算機(jī)上偵聽端口 5000 并轉(zhuǎn)發(fā)到 my-pod 上的端口 6000
kubectl exec my-pod -- ls /                         # 在已有的 Pod 中運(yùn)行命令(單容器場(chǎng)景)
kubectl exec my-pod -c my-container -- ls /         # 在已有的 Pod 中運(yùn)行命令(多容器場(chǎng)景)
kubectl top pod POD_NAME --containers               # 顯示給定 Pod 和其中容器的監(jiān)控?cái)?shù)據(jù)
Basic Commands (Beginner):
  create         # Create a resource from a file or from stdin.
  expose         # 使用 replication controller, service, deployment 或者 pod 并暴露它作為一個(gè) 新的
Kubernetes Service
  run            # 在集群中運(yùn)行一個(gè)指定的鏡像
  set            # 為 objects 設(shè)置一個(gè)指定的特征

Basic Commands (Intermediate):
  explain        #查看資源的文檔
  get            #顯示一個(gè)或更多 resources
  edit           #在服務(wù)器上編輯一個(gè)資源
  delete         #Delete resources by filenames, stdin, resources and names, or by resources and label selector

Deploy Commands:
  rollout        #Manage the rollout of a resource
  scale          #為 Deployment, ReplicaSet, Replication Controller 或者 Job 設(shè)置一個(gè)新的副本數(shù)量
  autoscale      #自動(dòng)調(diào)整一個(gè) Deployment, ReplicaSet, 或者 ReplicationController 的副本數(shù)量

Cluster Management Commands:
  certificate    #修改 certificate 資源.
  cluster-info   #顯示集群信息
  top            #Display Resource (CPU/Memory/Storage) usage.
  cordon         #標(biāo)記 node 為 unschedulable
  uncordon       #標(biāo)記 node 為 schedulable
  drain          #Drain node in preparation for maintenance
  taint          #更新一個(gè)或者多個(gè) node 上的 taints

Troubleshooting and Debugging Commands:
  describe       #顯示一個(gè)指定 resource 或者 group 的 resources 詳情
  logs           #輸出容器在 pod 中的日志
  attach         #Attach 到一個(gè)運(yùn)行中的 container
  exec           #在一個(gè) container 中執(zhí)行一個(gè)命令
  port-forward   #Forward one or more local ports to a pod
  proxy          #運(yùn)行一個(gè) proxy 到 Kubernetes API server
  cp             #復(fù)制 files 和 directories 到 containers 和從容器中復(fù)制 files 和 directories.
  auth           #Inspect authorization

Advanced Commands:
  apply          #通過(guò)文件名或標(biāo)準(zhǔn)輸入流(stdin)對(duì)資源進(jìn)行配置
  patch          #使用 strategic merge patch 更新一個(gè)資源的 field(s)
  replace        #通過(guò) filename 或者 stdin替換一個(gè)資源
  wait           #Experimental: Wait for one condition on one or many resources
  convert        #在不同的 API versions 轉(zhuǎn)換配置文件

Settings Commands:
  label          #更新在這個(gè)資源上的 labels
  annotate       #更新一個(gè)資源的注解
  completion     #Output shell completion code for the specified shell (bash or zsh)

Other Commands:
  alpha          #Commands for features in alpha
  api-resources  #Print the supported API resources on the server
  api-versions   #Print the supported API versions on the server, in the form of "group/version"
  config         #修改 kubeconfig 文件
  plugin         #Runs a command-line plugin
  version        #輸出 client 和 server 的版本信息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仙蚜,隨后出現(xiàn)的幾起案子盒延,更是在濱河造成了極大的恐慌羹唠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浅缸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)袖肥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門撮抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人栗涂,你說(shuō)我怎么就攤上這事知牌。” “怎么了斤程?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵角寸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我忿墅,道長(zhǎng)扁藕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任疚脐,我火速辦了婚禮亿柑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亮曹。我一直安慰自己橄杨,他們只是感情好秘症,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著式矫,像睡著了一般乡摹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上采转,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天聪廉,我揣著相機(jī)與錄音,去河邊找鬼故慈。 笑死板熊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的察绷。 我是一名探鬼主播干签,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拆撼!你這毒婦竟也來(lái)了容劳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闸度,失蹤者是張志新(化名)和其女友劉穎竭贩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莺禁,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡留量,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哟冬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楼熄。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柒傻,靈堂內(nèi)的尸體忽然破棺而出孝赫,到底是詐尸還是另有隱情较木,我是刑警寧澤红符,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站伐债,受9級(jí)特大地震影響预侯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峰锁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一萎馅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虹蒋,春花似錦糜芳、人聲如沸飒货。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塘辅。三九已至,卻和暖如春皆撩,著一層夾襖步出監(jiān)牢的瞬間扣墩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工扛吞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呻惕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓滥比,卻偏偏與公主長(zhǎng)得像亚脆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盲泛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容