主頁 > 軟體設計 > 微服務架構師-docker私有鏡像倉庫的配置和使用

微服務架構師-docker私有鏡像倉庫的配置和使用

2021-08-19 07:16:01 軟體設計

文章目錄

  • docker私有化倉庫介紹
      • 私有倉庫介紹
      • 私有鏡像倉庫有哪些有優點?
      • 實驗環境規劃
  • 使用registry搭建docker私有倉庫
      • 初始化實驗環境-安裝docker
      • 開啟包轉發功能和修改內核引數
      • 配置xuegod64為docker私有倉庫服務端
      • 配置xuegod63上的docker使用xuegod64上的私有倉庫
      • 實戰-上傳本地鏡像到私有倉庫
  • 實戰:使用 harbor 搭建Docker私有倉庫
      • 為harbor簽發證書
      • 安裝harbor
      • harbor 影像化界面使用說明
      • 在xuegod63上測驗使用xuegod64的harbor鏡像倉庫
      • 從harbor倉庫下載鏡像
  • 使用阿里云私有倉庫存盤自己的docker鏡像


docker私有化倉庫介紹

私有倉庫介紹

dockerhub大家還記著是干什么的嗎?
存放鏡像的,公共倉庫
官方網站:
Docker hub 官網:https://registry.hub.docker.com
有時候使用Docker Hub這樣的公共倉庫可能不方便(有時候無法訪問),用戶可以創建一個本地倉庫供私人使用,可以使用官方提供的工具docker-registry來配置私有鏡像倉庫

1、使用官方提供的工具來配置
docker-registry 是官方提供的工具,可以用于構建私有的鏡像倉庫,
registry [?red??stri] 記錄,登記

私有鏡像倉庫有哪些有優點?

私有倉庫好處:
1、速度快
2、維護方便
3、安全

搭建私有倉庫的思路:
老的思路:下載原始碼tar/yum安裝 -》 安裝-》修改組態檔-》啟動服務
使用docker思路:直接下載并使用registry鏡像啟動docker實體,這樣倉庫就搭建成功了,

有了docker以后,所有軟體不再以office.exe 或lrzsz.rpm形式發布,而以docker鏡像發布,你只需要下載docker鏡像并運行一個docker實體,有了docker以后,再也不用為安裝linux服務而發愁!

實驗環境規劃

實驗環境:
docker私有倉庫地址:xuegod64 xuegod64機器需要的記憶體至少要2G,我分配的是6G
docker服務器地址 : xuegod63 ,xuegod63會使用xuegod64上docker私有倉庫來pull/push鏡像,實驗拓撲圖:
在這里插入圖片描述

使用registry搭建docker私有倉庫

Docker服務:
主機名為xuegod63
主機ip: 192.168.1.63(這個ip大家可以根據自己所在環境去配置,配置成靜態IP)
配置:4vCPU/4Gi記憶體

準備實驗環境:
新創建一臺centos7.6 64位虛擬機
主機名為xuegod64
主機ip: 192.168.1.64(這個ip大家可以根據自己所在環境去配置,配置成靜態IP)
配置:4vCPU/4Gi記憶體

初始化實驗環境-安裝docker

#配置靜態IP
把虛擬機或者物理機配置成靜態ip地址,這樣機器重新啟動后ip地址也不會發生改變,以xuegod64主機為例,修改靜態IP:
修改/etc/sysconfig/network-scripts/ifcfg-ens33檔案,變成如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.1.64
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#修改組態檔之后需要重啟網路服務才能使配置生效,重啟網路服務命令如下:
service network restart

#配置主機名:xuegod64
hostnamectl set-hostname xuegod64
#在xuegod63和xuegod64上配置hosts檔案,讓兩臺主機hosts檔案保持一致
[root@xuegod63 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63
192.168.1.64 xuegod64
[root@xuegod64 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63
192.168.1.64 xuegod64
#關閉firewalld防火墻
[root@xuegod64 ~]# systemctl stop firewalld ; systemctl disable firewalld
#關閉iptables防火墻
[root@xuegod64 ~]# yum install iptables-services -y  #安裝iptables
#禁用iptables
[root@xuegod64 ~]# service iptables stop   && systemctl disable iptables
清空防火墻規則
[root@xuegod64 ~]# iptables -F 
#關閉selinux
[root@xuegod64 ~]# setenforce 0   #臨時禁用
#永久禁用
[root@xuegod64 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
注意:修改selinux組態檔之后,重啟機器,selinux才能永久生效
[root@xuegod64 ~]# getenforce
Disabled
#配置時間同步
[root@xuegod64 ~]# ntpdate cn.pool.ntp.org
#撰寫計劃任務
crontab -e
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org
重啟crond服務使配置生效:
service crond restart

方法1:在線安裝docker-ce , 配置國內docker-ce的yum源(阿里云)

[root@xuegod64 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

配置docker-ce的離線yum源:
方法2:推薦大家使用離線安裝,下面需要的k8s-docker.tar.gz壓縮包私信我
[root@xuegod64 ~]# tar xf k8s-docker.tar.gz -C /opt/
[root@xuegod64 ~]# tee /etc/yum.repos.d/k8s-docker.repo << ‘EOF’
[k8s-docker]
name=k8s-docker
baseurl=file:///opt/k8s-docker
enable=1
gpgcheck=0
EOF

安裝基礎軟體包

[root@xuegod64 ~]# yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl
 curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release 
 openssh-server socat  ipvsadm conntrack ntpdate  telnet

安裝docker環境依賴

[root@xuegod64 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

安裝docker-ce

[root@xuegod64 ~]# yum install docker-ce docker-ce-cli containerd.io -y

注:docker-ce-cli 作用是docker命令列工具包
containerd.io 作用是容器介面相關包
yum info 軟體包的名字,可以查看一個包的具體作用,

#啟動docker服務

[root@xuegod64 ~]# systemctl start docker && systemctl enable docker

#查看Docker 版本資訊

[root@xuegod64 ~]# docker version    
[root@xuegod64 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-04-20 10:07:23 CST; 9s ago

開啟包轉發功能和修改內核引數

內核引數修改:

[root@xuegod64 ~]# modprobe br_netfilter
[root@xuegod64 ~]# echo "modprobe br_netfilter" >> /etc/profile
[root@xuegod64 ~]# cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[root@xuegod64 ~]# sysctl -p /etc/sysctl.d/docker.conf

#重啟docker

[root@xuegod64 ~]# systemctl restart docker

什么是br_netfilter?
linux iptables/netfilter通過和linux bridge功能聯動,以實作透明防火墻功能,

透明防火墻(Transparent Firewall)又稱橋接模式防火墻(Bridge Firewall),簡單來說,就是在網橋設備上加入防火墻功能,透明防火墻具有部署能力強、隱蔽性好、安全性高的優點,

為什么要執行modprobe br_netfilter?
在/etc/sysctl.conf中添加:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1 

執行sysctl -p 時出現:

解決方法:

modprobe br_netfilter

還記著net.bridge.bridge-nf-call-ip6tables和net.ipv4.ip_forward嗎?

net.ipv4.ip_forward:
單機docker的網路架構實質上是在宿主機上安裝了一個docker0的網橋,從外部訪問容器內部時只需要訪問宿主機的地址和對應的容器映射的地址,訪問的資料包到宿主機上后經過ip包決議后通過目的port和iptables的規則會將資料包由eth0網卡轉發至docker0網橋上進行下一步路由,所以如果容器的宿主機上的ip_forward未打開,那么該宿主機上的容器則不能被其他宿主機訪問

net.bridge.bridge-nf-call-ip6tables:
默認情況下,從容器發送到默認網橋的流量,并不會被轉發到外部,要開啟轉發:net.bridge.bridge-nf-call-ip6tables = 1

配置xuegod64為docker私有倉庫服務端

1.拉取registry 鏡像, registry鏡像中包括搭建本地私有倉庫的軟體:

registry   [?red??stri]   記錄,登記  ;  pull 拉 ; push 推

把registry.tar上傳到xuegod64上
匯入本地鏡像:

[root@xuegod64 ~]# docker load -i  registry.tar
  1. 查看registry鏡像
[root@xuegod64 ~]# docker images 
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
registry      latest              047218491f8c        3 weeks ago         33.17 MB
  1. 實戰:使用registry鏡像搭建一個私有倉庫
    使用registry鏡像搭建一個私有倉庫, registry鏡像中已經把搭建私有庫程式安裝好了,我只需要使用registry鏡像運行一個docker實體就可以了,

registry服務監聽到埠號,默認是5000

[root@xuegod64~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry   registry:latest
e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60

默認情況下,Registry存放鏡像的目錄是/var/lib/registry目錄下,這樣如果容器被洗掉,則存放于容器中的鏡像也會丟失,所以我們一般情況下會指定本地物理機一個目錄如/opt/registry掛載到容器的/var/lib/registry下,使用-v引數,指定本地持久的路徑,

[root@xuegod64~]# ls  /opt/registry    # 這個目錄會自動創建
[root@xuegod64~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                    NAMES
90cc7afb477e   registry:latest   "/entrypoint.sh /etc…"   34 seconds ago   Up 33 seconds   0.0.0.0:5000->5000/tcp   registry
[root@xuegod63 ~]# netstat  -antup | grep 5000
tcp6       0      0 :::5000                 :::*                    LISTEN      4032/docker-proxy

說明,私有庫已經啟動成功,

查看私有倉庫中的鏡像串列:

curl http://192.168.1.64:5000/v2/_catalog 
{"repositories":[]}   

#發現,現在還是空的,后期上傳了本地docker鏡像到私有倉庫中,就有資料了,

配置xuegod63上的docker使用xuegod64上的私有倉庫

修改docker組態檔,指定docker鏡像加速結點為:私有倉庫的地址

[root@xuegod63 ~]# vim  /etc/docker/daemon.json   

#修改daemon.json檔案,寫入以下內容:
“insecure-registries”: [ “192.168.1.64:35000” ]
修改之后的/etc/docker/daemon.json檔案完整內容如下:

{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-
cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-
mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com"
,"https://e9yneuy4.mirror.aliyuncs.com"],
"insecure-registries": [ "192.168.1.64:5000" ]  
}

注: --insecure-registry不安全的注冊,這里的不安全指的是走http協議,要想安全傳輸鏡像,需要使用https協議,我們的私有倉庫一般是局域中使用,所以直接使用http協議就可以了,
#重新加載,使配置生效

[root@xuegod63 ~]# systemctl daemon-reload

#重新啟動docker服務

[root@xuegod63 ~]# systemctl restart docker 

實戰-上傳本地鏡像到私有倉庫

  1. 從Docker HUB 上拉取一個測驗鏡像,名字: busybox
    本地匯入
    上傳busybox.tar鏡像到xuegod63上,作為測驗鏡像,
[root@xuegod63 ~]# docker load -i  busybox.tar
[root@xuegod63 ~]# docker images 
REPOSITORY  TAG      IMAGE ID		     CREATED            SIZE
busybox      latest     00f017a8c2a6    	2 weeks ago         1.11 MB

注:
BusyBox 概述: BusyBox是一個集成了一百多個最常用Linux命令和工具的軟體,BusyBox 包含了BusyBox一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具,例grep、find、mount以及telnet,有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀,簡單的說BusyBox就好像是個大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Android 系統的自帶的shell,
瑞士軍刀見過沒?
在這里插入圖片描述

官網: www.busybox.net
在這里插入圖片描述
2 .為基礎鏡像打個標簽(復制一個鏡像并起一個名字)
語法: docker tag 原鏡像名:標簽 私有倉庫地址/新鏡像名:標簽
執行:

[root@xuegod63 ~]# docker tag busybox:latest 192.168.1.64:5000/busybox:latest

注: 不寫鏡像標簽,默認是:latest

[root@xuegod63 ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
192.168.1.64:5000/busybox   latest    00f017a8c2a6   4 years ago    1.11MB

3.將剛新打好標簽的192.168.1.64:35000/busybox鏡像,push到xuegod64私有倉庫中,

[root@xuegod63 ~]#  docker push 192.168.1.64:5000/busybox 

push :把鏡像傳到私有鏡像倉庫
4.登錄xuegod64上,查看鏡像的存盤目錄和檔案

[root@xuegod64 ~]# yum install tree -y 
[root@xuegod64 ~]# tree /opt/registry/docker/registry/v2/repositories/
/opt/registry/docker/registry/v2/repositories/
└── busybox   #可以看到上傳的鏡像

訪問http://192.168.1.64:5000/v2/_catalog
#可以查看私有倉庫中的鏡像串列,如下圖:

{"repositories":["busybox"]}

3.2.6 實戰-使用私有倉庫中的鏡像創建服務
洗掉鏡像:
語法: docker rmi 鏡像名:標簽
[root@xuegod63 ~]# docker rmi 192.168.1.64:5000/busybox #洗掉鏡像
[root@xuegod63 ~]# docker pull 192.168.1.64:5000/busybox #下載鏡像
[root@xuegod63 ~]# docker images #查看匯入的鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.64:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB

使用新匯入的鏡像,運行一個新docker實體:
[root@xuegod63 ~]# docker run 192.168.1.64:5000/busybox:latest echo “hello”
hello
運行成功,

總結
搭建私有倉庫步驟:
1、把registry鏡像匯入xuegod64機器
2、基于registry鏡像運行一個docker實體,registry默認監聽5000埠,在宿主機上需要映射5000埠

把鏡像傳到私有倉庫步驟:
1、安裝docker服務
2、修改docker服務鏡像源,改成私有倉庫地址:

"insecure-registries": [ "192.168.1.64:5000" ] 

3、把要匯入的鏡像打個標簽如: 192.168.1.64:5000/busybox:latest
4、上傳打了標簽的鏡像到私有倉庫: docker push 192.168.1.64:5000/busybox:latest

從私有倉庫下載鏡像:
1、修改docker服務鏡像源,改成私有倉庫地址:

"insecure-registries": [ "192.168.1.64:5000" ]

2、下載剛才上傳的鏡像 : docker pull 192.168.1.64:5000/busybox:latest
3、查看私有倉庫中的鏡像串列:http://192.168.1.64:5000/v2/_catalog

實戰:使用 harbor 搭建Docker私有倉庫

harbor介紹
Docker容器應用的開發和運行離不開可靠的鏡像管理,雖然Docker官方也提供了公共的鏡像倉庫,但是從安全和效率等方面考慮,部署我們私有環境內的Registry也是非常必要的,Harbor是由VMware公司開源的企業級的Docker Registry管理專案,它包括權限管理(RBAC)、LDAP、日志審核、管理界面、自我注冊、鏡像復制和中文支持等功能,
官網地址:https://github.com/goharbor/harbor
在這里插入圖片描述
harbor ['hɑ:b?] 海灣

實驗環境:
xuegod64機器需要的記憶體至少要2G,我分配的是6G
注:安裝harbor,系統根磁區的可用空間需要大于6G,否則安裝時會報空間不足,記憶體2G以上
在這里插入圖片描述

為harbor簽發證書

[root@xuegod64 ~]# mkdir /data/ssl -p
[root@xuegod64 ~]# cd /data/ssl/

生成ca證書:

[root@xuegod64 ssl]# openssl genrsa -out ca.key 3072

#生成一個3072位的key,也就是私鑰

[root@xuegod64 ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem

#生成一個數字證書ca.pem,3650表示證書的有效時間是3年,按箭頭提示填寫即可,沒有箭頭標注的為空:

[root@xuegod64 ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN 
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xuegod
Organizational Unit Name (eg, section) []:CA
Common Name (eg, your name or your server's hostname) []:xuegod64.cn
Email Address []:mk@163.com

#生成域名的證書:

[root@xuegod64 ssl]# openssl genrsa -out harbor.key  3072

#生成一個3072位的key,也就是私鑰

[root@xuegod64 ssl]# openssl req -new -key harbor.key -out harbor.csr

#生成一個證書請求,一會簽發證書時需要的,標箭頭的按提示填寫,沒有箭頭標注的為空:

[root@xuegod64 ssl]#  openssl req -new -key harbor.key -out harbor.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xuegod
Organizational Unit Name (eg, section) []:CA       
Common Name (eg, your name or your server's hostname) []:xuegod64.cn
Email Address []:mk@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

簽發證書:

[root@xuegod64 ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650

顯示如下,說明證書簽發好了:
在這里插入圖片描述
查看證書是否有效:

openssl x509 -noout -text -in harbor.pem 

顯示如下,說明有效:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            cd:21:3c:44:64:17:65:40
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CH, ST=BJ, L=BJ, O=Default Company Ltd
        Validity
            Not Before: Dec 26 09:29:19 2020 GMT
            Not After : Dec 24 09:29:19 2030 GMT
        Subject: C=CH, ST=BJ, L=BJ, O=Default Company Ltd, CN=harbor
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (3072 bit)
                Modulus:
                    00:b0:60:c3:e6:35:70:11:c8:73:83:38:9a:7e:b8:
                    ,,,

安裝harbor

#洗掉之前registry容器,防止跟安裝harbor沖突

[root@xuegod64 ssl]# docker rm -f registry

創建安裝目錄

[root@xuegod64 ssl]# mkdir /data/install -p
[root@xuegod64 ssl]# cd /data/install/

安裝harbor
/data/ssl目錄下有如下檔案:

ca.key  ca.pem  ca.srl  harbor.csr  harbor.key  harbor.pem

[root@xuegod64 install]# cd /data/install/

#把harbor的離線包harbor-offline-installer-v1.5.0.tgz上傳到這個目錄,離線包在課件里提供了,可自行下載:
解壓:

[root@xuegod64 install]# tar zxvf harbor-offline-installer-v1.5.0.tgz
[root@xuegod64 install]# cd harbor
[root@xuegod64 harbor]# ls

#可看到如下目錄:
#common目錄:存放模板配置
#ha目錄:做harbor高可用的

修改組態檔:

[root@xuegod64 harbor]# vim harbor.cfg
hostname = xuegod64

#修改hostname,跟上面簽發的證書域名保持一致

ui_url_protocol = https

#協議用https

ssl_cert = /data/ssl/harbor.pem
ssl_cert_key = /data/ssl/harbor.key

郵件和ldap不需要配置,在harbor的web界面可以配置
其他配置采用默認即可
修改之后保存退出
注:harbor默認的賬號密碼:admin/Harbor12345

安裝docker-compose
方法1:離線上傳docker-compose到服務器上
下載二進制檔案上傳至linux(課程資料已提供docker-compose二進制檔案可直接上傳)

[root@xuegod63 ~]# rz

在這里插入圖片描述

[root@xuegod63 ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

添加執行權限

[root@xuegod63 ~]# chmod +x /usr/local/bin/docker-compose

注: docker-compose專案是Docker官方的開源專案,負責實作對Docker容器集群的快速編排,Docker-Compose的工程組態檔默認為docker-compose.yml,Docker-Compose運行目錄下的必要有一個docker-compose.yml,docker-compose可以管理多個docker實體,

方法2:在線安裝:

[root@xuegod63 ~]# curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

添加執行權限

[root@xuegod63 ~]# chmod +x /usr/local/bin/docker-compose

安裝harbor需要的離線鏡像包docker-harbor.tar.gz在課件,可上傳到xuegod64,通過docker load -i解壓

[root@xuegod64 ~]#  docker load -i docker-harbor.tar.gz
[root@xuegod64 install]# cd /data/install/harbor
[root@xuegod64 harbor]# ./install.sh --with-notary --with-clair

#clair 開啟鏡像的漏洞掃描,Clair是一個開源專案,它提供了一個工具,通過靜態分析appc和docker容器中的漏洞來監控容器的安全性,Clair是一個API驅動的分析引擎,它逐層檢查容器是否存在已知的安全缺陷,使用Clair,您可以輕松構建為容器漏洞提供連續監視的服務,
在這里插入圖片描述
在這里插入圖片描述
安裝程序會出現上面的界面,說明安裝正常,docker ps 顯示如下,說明容器啟動正常
在這里插入圖片描述
在自己電腦修改hosts檔案
在這里插入圖片描述
在hosts檔案添加如下一行,然后保存即可

192.168.1.64  xuegod64

擴展:
如何停掉harbor:
你可以使用docker-compose來啟動或關閉Harbor服務,但必須在與docker-compose.yml相同的目錄中運行,

[root@xuegod64 harbor]# cd /data/install/harbor
[root@xuegod64 harbor]# docker-compose stop 
或:docker-compose stop  -f /data/install/docker-compose.yml

如何啟動harbor:

[root@xuegod64 harbor]# cd /data/install/harbor
[root@xuegod64 harbor]# docker-compose start
docker-compose start	

如果docker-compose start啟動harbor之后,還是訪問不了,那就需要重啟虛擬機

harbor 影像化界面使用說明

在瀏覽器輸入:
https://xuegod64
在這里插入圖片描述
接收風險并繼續,出現如下界面,說明訪問正常
在這里插入圖片描述
賬號:admin
密碼:Harbor12345
輸入賬號密碼出現如下:
在這里插入圖片描述
所有基礎鏡像都會放在library里面,這是一個公開的鏡像倉庫

新建專案->起個專案名字test(把訪問級別公開那個選中,讓專案才可以被公開使用)
在這里插入圖片描述
在這里插入圖片描述

在xuegod63上測驗使用xuegod64的harbor鏡像倉庫

#修改docker配置

[root@xuegod63 ~]# vim /etc/docker/daemon.json

{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.64"]
}

修改配置之后使配置生效:

[root@xuegod63 ~]# systemctl daemon-reload && systemctl restart docker

#查看docker是否啟動成功

[root@xuegod63 ~]# systemctl status docker

#顯示如下,說明啟動成功:

Active: active (running) since Fri … ago

注意:
配置新增加了一行內容如下:

"insecure-registries":["192.168.1.64"], 

上面增加的內容表示我們內網訪問harbor的時候走的是http,192.168.1.64是安裝harbor機器的ip

登錄harbor:

[root@xuegod63]# docker login 192.168.1.64

Username:admin 
Password:  Harbor12345

輸入賬號密碼之后看到如下,說明登錄成功了:

Login Succeeded

#匯入tomcat鏡像,tomcat.tar.gz在課件里

[root@xuegod63 ~]# docker load -i tomcat.tar.gz

#把tomcat鏡像打標簽

[root@xuegod63 ~]# docker tag tomcat:latest  192.168.1.64/test/tomcat:v1

執行上面命令就會把192.168.1.64/test/tomcat:v1上傳到harbor里的test專案下

[root@xuegod63 ~]# docker push 192.168.1.64/test/tomcat:v1

執行上面命令就會把192.168.1.64/test/tomcat:v1上傳到harbor里的test專案下
在這里插入圖片描述

從harbor倉庫下載鏡像

在xuegod63機器上洗掉鏡像

[root@xuegod63 ~]# docker rmi -f 192.168.1.64/test/tomcat:v1

拉取鏡像

[root@xuegod63 ~]#docker pull 192.168.1.64/test/tomcat:v1

擴展:如果想要走安全的https訪問harbor,可以用如下方法

#登錄到xuegod63機器,創建證書存放目錄

[root@xuegod63]# mkdir -p /etc/docker/certs.d/xuegod64

#xuegod64是harbor簽發證書的時候指定的主機名

#登錄harbor服務器,把ca證書拷貝到使用docker的機器上

[root@xuegod64 ~]# cd /data/ssl
[root@xuegod64 ~]# scp ca.pem xuegod63:/etc/docker/certs.d/xuegod64/

#登錄到xuegod63機器

[root@xuegod63]# mv  /etc/docker/certs.d/xuegod64
[root@xuegod64 ~]# mv ca.pem ca.crt

#修改docker配置

[root@xuegod63 ~]# vim /etc/docker/daemon.json

{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"],
}

#洗掉"insecure-registries": [“192.168.1.64”]

#重啟docker即可

[root@xuegod63]# systemctl restart docker
[root@xuegod63]# docker login https://xuegod64

Username:admin 
Password:  Harbor12345

使用阿里云私有倉庫存盤自己的docker鏡像

登錄阿里云開發者平臺
https://developer.aliyun.com/service
在這里插入圖片描述
使用自己的賬號登錄,沒有的話注冊一個賬號

https://cr.console.aliyun.com/cn-hangzhou/instances
在這里插入圖片描述
#點擊運行個人版
在這里插入圖片描述
在此頁面中點擊“命名空間”-創建命名空間: testxuegod1
在這里插入圖片描述
在這里插入圖片描述
配置一個訪問私有倉庫的密碼,用戶名是你登錄網站的用戶名,
在這里插入圖片描述
創建鏡像倉庫:
在這里插入圖片描述
倉庫名稱:test
在這里插入圖片描述
在這里插入圖片描述
點管理,查看使用方法:
在這里插入圖片描述
點開管理頁面,查看操作指南:
在這里插入圖片描述
在這里插入圖片描述

開始使用阿里云私有倉庫

登錄阿里云docker registry:

[root@xuegod63 ~]# docker login --username=lucky6a6a  registry.cn-hangzhou.aliyuncs.com

登錄registry的用戶名是阿里云賬號全名,密碼是開通服務時設定的密碼,
登錄xuegod63將本地鏡像tomcat推送到阿里云registry
#把tomcat鏡像上傳到xuegod63上,手動解壓

docker load  -i tomcat.tar.gz

為基礎鏡像打個標簽

[root@xuegod63 ~]# docker tag tomcat registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1

#把鏡像上傳到阿里云主機

[root@xuegod63 ~]# docker push registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1

在阿里云上查看:
在這里插入圖片描述
在這里插入圖片描述
下載一個鏡像:
登錄阿里云docker registry:

[root@xuegod64 ~]# docker login --username=lucky6a6a  registry.cn-hangzhou.aliyuncs.com

登錄registry的用戶名是阿里云賬號全名,密碼是開通服務時設定的密碼,
看到如下說明登錄成功:
在這里插入圖片描述

[root@xuegod64 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1
[root@xuegod64 ~]# docker images

#配置阿里云鏡像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

在這里插入圖片描述

                                            想要獲取原文當和學習視頻的 
                                              添加好友回復“docker”即可

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294677.html

標籤:其他

上一篇:Android 架構MVC MVP MVVM+實體

下一篇:ARP欺騙

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more