Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

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

學神來啦 2021-08-18 15:24:23 阅读数:5895 评论数:0 点赞数:0 收藏数:0

docker私有化倉庫介紹

私有倉庫介紹

dockerhub大家還記著是幹什麼的嗎? 存放鏡像的,公共倉庫 官方網站: Docker hub 官網: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、日志審核、管理界面、自我注册、鏡像複制和中文支持等功能。 官網地址:github.com/goharbor/ha… 在這裏插入圖片描述

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鏡像

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

cr.console.aliyun.com/cn-hangzhou… 在這裏插入圖片描述 #點擊運行個人版 在這裏插入圖片描述 在此頁面中點擊“命名空間”-創建命名空間: 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
複制代碼

在這裏插入圖片描述

版权声明
本文为[學神來啦]所创,转载请带上原文链接,感谢

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;

支付宝红包,每日可领