【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)

本篇文章继续介绍Docker内容,包含Harbor配置HTTPS证书的两种方式(阿里云官方证书与自建证书),Harbor两种方案实现高可用(共享存储目录与主从复制),镜像推送至Docker hub官方仓库和阿里云镜像仓库及拉取海外镜像技巧。

目录

Harbor配置HTTPS

一、配置阿里云官方证书

二、配置自建证书

Harbor高可用

一、Harbor共享储存目录高可用方案

1、小插曲:scp报错解决方案

二、Harbor主从复制及高可用方案

镜像推送

一、推送至docker hub官方仓库

二、推送至阿里云镜像

构建海外镜像技巧


Harbor配置HTTPS

参考官网链接:https://goharbor.io/docs/2.8.0/

一、配置阿里云官方证书

1、在阿里云申请免费的证书并下载下来

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第1张图片

观察harbor配置文件,发现需要下载cert和key 

 [root@Docker01 ~]# cat -n /koten/softwares/harbor/harbor.yml
......
    17	#  certificate: /your/certificate/path
    18	#  private_key: /your/private/key/path
......

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第2张图片

2、将证书和key放入harbor下的目录,然后在配置文件里修改下路径,重启harbor

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第3张图片

[root@Docker01 harbor]# cd /koten/softwares/harbor/
[root@Docker01 harbor]# mkdir -p certs/official
[root@Docker01 harbor]# cd certs/official
[root@Docker01 official]# ls
www.koten.vip.key  www.koten.vip_public.crt
[root@Docker01 official]# cd ../../
[root@Docker01 harbor]# cat harbor.yml
......
hostname: www.koten.vip
......
https:
#  # https port for harbor, default is 443
  port: 443
#  # The path of cert and key files for nginx
  certificate: /koten/softwares/harbor/certs/official/www.koten.vip_public.crt #最好是写绝对路径
  private_key: /koten/softwares/harbor/certs/official/www.koten.vip.key
......
[root@Docker01 harbor]# ./install.sh

修改linux和windows的hosts文件

10.0.0.201 www.koten.vip

浏览器访问成功显示HTTPS证书 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第4张图片

Linux作为客户端登录会提示缺少证书认证(有的时候官方的证书不提示),我们需要把证书和秘钥放到/etc/docker/certs.d/www.koten.vip下就可以了 

[root@Docker01 harbor]# docker login www.koten.vip
Username: admin
Password: 
Error response from daemon: Get "https://www.koten.vip/v2/": x509: certificate signed by unknown authority
[root@Docker01 harbor]# mkdir -p /etc/docker/certs.d/www.koten.vip
[root@Docker01 harbor]# cp certs/official/www.koten.vip_public.crt /etc/docker/certs.d/www.koten.vip/www.koten.vip.cert    #注意此处更名
[root@Docker01 harbor]# cp certs/official/www.koten.vip.key /etc/docker/certs.d/www.koten.vip/
[root@Docker01 harbor]# docker login www.koten.vip
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

二、配置自建证书

1、生成ca的证书

#1、创建目录,官方并未要求这样的目录结构,只是方便我们用的时候方便
[root@Docker01 ~]# mkdir -p /koten/softwares/harbor/certs/build/{ca,server,client}
[root@Docker01 ~]# cd /koten/softwares/harbor/certs/build/

#2、生成ca私钥
[root@Docker01 build]# openssl genrsa -out ca/ca.key 4096

#3、生成ca的自签名证书
[root@Docker01 build]# openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=koten.com" \
 -key ca/ca.key \
 -out ca/ca.crt

2、生成harbor主机证书

#1、生成harbor主机的私钥
[root@Docker01 build]# openssl genrsa -out server/harbor.koten.com.key 4096

#2、生成harbor主机的证书申请
[root@Docker01 build]# openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.koten.com" \
    -key server/harbor.koten.com.key \
    -out server/harbor.koten.com.csr

#3、生成x509 v3扩展文件
[root@Docker01 build]# cat > server/v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=koten.com
DNS.2=koten
DNS.3=harbor.koten.com
EOF

#4、使用v3.ext给harbor主机签发证书
[root@Docker01 build]# openssl x509 -req -sha512 -days 3650 \
    -extfile server/v3.ext \
    -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial \
    -in server/harbor.koten.com.csr \
    -out server/harbor.koten.com.crt

#5、将crt文件转换为cert客户端证书文件
[root@Docker01 build]# openssl x509 -inform PEM -in server/harbor.koten.com.crt -out server/harbor.koten.com.cert

#提示:docker程序认为"*.crt"文件是CA证书文件,"*.cert"客户端证书文件,于是上面需要转换一下,其实使用cp一下也是可以的,内容并没有变化。

3、配置harbor服务器使用证书

#1、修改harbor的配置文件
[root@Docker01 build]# cat /koten/softwares/harbor/harbor.yml
......
hostname: harbor.koten.com
......
  certificate: /koten/softwares/harbor/certs/build/se
rver/harbor.koten.com.crt
  private_key: /koten/softwares/harbor/certs/build/se
rver/harbor.koten.com.key
......
harbor_admin_password: 1

#2、安装harbor服务
[root@Docker01 build]# cd /koten/softwares/harbor  && ./install.sh

#提示:如果已经安装harbor服务的话,就不需要重复执行"./install.sh"脚本,仅需执行"./prepare"并搭配"docker-compose down"和"docker-compose up -d"即可。

此时windows进行hosts解析,浏览器已经可以访问到带证书的链接 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第5张图片

4、客户端配置证书,推荐配置目录,偏于后续维护

[root@Docker01 build]# cp ca/ca.crt server/harbor.koten.com.key server/harbor.koten.com.cert client
[root@Docker01 build]# ll -R
.:
total 0
drwxr-xr-x 2 root root  48 Jun 13 20:57 ca
drwxr-xr-x 2 root root  77 Jun 13 21:38 client
drwxr-xr-x 2 root root 133 Jun 13 20:58 server

./ca:
total 12
-rw-r--r-- 1 root root 2021 Jun 13 20:55 ca.crt
-rw-r--r-- 1 root root 3243 Jun 13 20:54 ca.key
-rw-r--r-- 1 root root   17 Jun 13 20:57 ca.srl

./client:
total 12
-rw-r--r-- 1 root root 2021 Jun 13 21:38 ca.crt
-rw-r--r-- 1 root root 2094 Jun 13 21:38 harbor.koten.com.cert
-rw-r--r-- 1 root root 3243 Jun 13 21:38 harbor.koten.com.key

./server:
total 20
-rw-r--r-- 1 root root 2094 Jun 13 20:58 harbor.koten.com.cert
-rw-r--r-- 1 root root 2094 Jun 13 20:57 harbor.koten.com.crt
-rw-r--r-- 1 root root 1712 Jun 13 20:56 harbor.koten.com.csr
-rw-r--r-- 1 root root 3243 Jun 13 20:56 harbor.koten.com.key
-rw-r--r-- 1 root root  263 Jun 13 20:57 v3.ext

5、将客户端证书拷贝到需要登录harbor服务器的节点上

#1、创建自定义域名的证书存放路径,注意以域名命名
[root@Docker02 ~]# mkdir -p /etc/docker/certs.d/harbor.koten.com

#2、拷贝证书文件
[root@Docker01 build]# scp client/* 10.0.0.202:/etc/docker/certs.d/harbor.koten.com

#3、将不安全访问的域名在配置文件里删除,以保证能使用https
[root@Docker02 ~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"]
}
[root@Docker02 ~]# systemctl restart docker

#4、客户端登录验证
[root@Docker02 ~]# docker login -u admin -p 1 harbor.koten.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

#注意:Error response from daemon: Get "https://harbor.koten.com/v2/": x509: certificate signed by unknown authority
#此报错说明证书是自签证书,需要单独配置信任。

Harbor高可用

我们解决harbor的单点问题,实现高可用,一般有两种办法,一种是两个服务器里只有harbor,数据目录单独放在一台服务器,用nfs挂载到两台harbor服务器,再起一台服务器做nfs的备份数据库,定时备份数据;另一种是两个一模一样的harbor,两个数据目录。做主从复制,一台宕机,另一台可以立即启用。

一、Harbor共享储存目录高可用方案

1、两个节点安装harbor,同步harbor数据

[root@Docker01 softwares]# pwd
/koten/softwares
[root@Docker01 softwares]# scp -r harbor 10.0.0.202:`pwd`
[root@Docker01 softwares]# scp -r /data/ 10.0.0.202:/

[root@Docker02 ~]# cd /koten/softwares/harbor/
[root@Docker02 harbor]# ./install.sh 

2、所有节点安装nfs服务

centos201、centos202、centos203(nfs服务端)

[root@Docker01 ~]# yum -y install nfs-utils
[root@Docker02 ~]# yum -y install nfs-utils
[root@Docker03 ~]# yum -y install nfs-utils

3、nfs服务端配置nfs共享

[root@Docker03 ~]# mkdir -p /koten/harbor
[root@Docker03 ~]# cat > /etc/exports <<'EOF'
/koten/harbor *(rw,no_root_squash)
EOF

4、配置nfs服务开机自启动

[root@Docker03 ~]# systemctl enable --now nfs

5、NFS服务端检查NFS暴露信息

[root@Docker03 ~]# exportfs
/koten/harbor 	

6、客户端节点手动挂载测试,完成数据的拷贝

[root@Docker01 ~]# mount -t nfs 10.0.0.203:/koten/harbor /data/
[root@Docker01 ~]# echo 'mount -t nfs 10.0.0.203:/koten/harbor /data/' >> /etc/rc.local
[root@Docker01 ~]# chmod +x /etc/rc.d/rc.local

[root@Docker02 ~]# mount -t nfs 10.0.0.203:/koten/harbor /data/
[root@Docker02 ~]# echo 'mount -t nfs 10.0.0.203:/koten/harbor /data/' >> /etc/rc.local
[root@Docker02 ~]# chmod +x /etc/rc.d/rc.local

7、安装keepalived

[root@Docker01 ~]# yum -y install keepalived
[root@Docker02 ~]# yum -y install keepalived

8、配置keepalived,实现VIP飘逸

[root@Docker01 ~]# cat > /etc/keepalived/keepalived.conf < /etc/keepalived/keepalived.conf <

 9、检查节点vip是否会飘

一开始在docker01,关闭docker01的keepalived,发现飘到了docker02,由于我们配置的是抢占时的keepalived,所以再次启用keepalived,vip会飘回来

[root@Docker01 ~]# ip a|grep 250
    inet 10.0.0.250/32 scope global ens33

[root@Docker02 ~]# ip a|grep 250

[root@Docker01 ~]# systemctl stop keepalived

[root@Docker02 ~]# ip a|grep 250
    inet 10.0.0.250/32 scope global ens33

[root@Docker01 ~]# ip a|grep 250
[root@Docker01 ~]# systemctl start keepalived
[root@Docker01 ~]# ip a|grep 250
    inet 10.0.0.250/32 scope global ens33

[root@Docker02 ~]# ip a|grep 250

10、修改windows的hosts解析,可以访问到harbor,若访问不到,可以重复下关闭开启keepalived的动作

10.0.0.250 harbor.koten.com

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第6张图片

11、后续可以准备一台备份服务器,专门定时备份NFS的数据 

1、小插曲:scp报错解决方案

scp报一堆错误,可能是因为指纹发生了变化,执行ssh-keygen -R 10.0.0.202,后面可以跟IP也可以跟主机名,解决。

[root@Docker01 softwares]# scp -r harbor 10.0.0.202:`pwd`
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:/oLW3vMiEm7Y9Dwi9K0pRyxF/ZBofuL2w7v6iroHJJI.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:1
ECDSA host key for 10.0.0.202 has changed and you have requested strict checking.
Host key verification failed.
lost connection
[root@Docker01 softwares]# ssh-keygen -R 10.0.0.202
# Host 10.0.0.202 found: line 1
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

二、Harbor主从复制及高可用方案

1、我们恢复之前的模式,还是两台主机各用各的数据目录,取消挂载即可,还可以利用之前的keepalived高可用

[root@Docker01 ~]# umount /data
[root@Docker02 ~]# umount /data

2、用10.0.0.201登录,在web界面创建仓库管理 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第7张图片

此时我们测试目标链接一直链接不通,可能是配置文件没改hostname,可以尝试下用不同域名,也可能是因为自建证书的问题

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第8张图片

修改主机名,注释https的内容并重启harbor

[root@Docker01 harbor]# cat harbor.yml
......
hostname: 10.0.0.201         #docker02修改为10.0.0.202
......
# https related config
#https:
#  # https port for harbor, default is 443
#  port: 443
#  # The path of cert and key files for nginx
#  certificate: /koten/softwares/harbor/certs/offici
al/www.koten.vip.crt
#  private_key: /koten/softwares/harbor/certs/offici
al/www.koten.vip.key
......
[root@Docker01 harbor]# ./prepare
[root@Docker01 harbor]# docker-compose down
[root@Docker01 harbor]# docker-compose up -d

输入用户名和密码显示不正确,我们用无痕模式打开 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第9张图片

无痕模式成功登录,测试可以链接

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第10张图片

新建复制管理,新建规则 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第11张图片

根据需求选择想要复制的规则

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第12张图片

在202删除之前创建的koten-test项目,但是201还有,我们等待一分钟,发现项目被成功推送至202 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第13张图片

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第14张图片

其他用法与上面类似,这样就实现了我们的主从复制,配合keepalive的高可用一起使用

注意此处有坑,做docker-registry定时迁移到harbor的时候(其实是harbor向docker-registry拉取),将镜像打到docker-registry,但是打标签并没有按照域名/项目/镜像名的格式打,导致harbor迁移不过来,重新打了镜像,恢复了迁移

镜像推送

如果不搭建harbor,我们也可以把镜像推送到其他的地方。

一、推送至docker hub官方仓库

最近的docker hub官网遭到了DNS污染,无法正常访问了,所以不再详细列举流程,只介绍大概。

注册-->登录-->创建项目,选择是否公开项目,公开了所有人都可以拉取-->会提供给你push的代码-->用docker hub的账号密码在linux终端登录-->运行它给的代码进行push-->推送成功后退出hub的登录-->在官网点进镜像,可以看到我们写的dockerfile,可以删除项目,也可以复制拉取代码-->其他用户可以直接拉取,无需登录官网

这个流程总感觉类似于gitlab,又是拉取,又是推动的,涉及web界面的多点就好了,连推送拉取的代码,人家都在界面上写好了

二、推送至阿里云镜像

harbor除了推送给harbor节点,还可以与很多hub仓库互通,我这里列举下推送至阿里云镜像

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第15张图片

上面有很多镜像可以供我们使用 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第16张图片

我们也可以把它当做仓库,把自己镜像推送上去,我这边创建个人版实例给大家展示

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第17张图片

 【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第18张图片

命名空间随机起,仓库名称一般是项目的名字哈,我这边随意

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第19张图片

有很多代码源可以选择,我们在Linux终端上传,选择本地仓库即可 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第20张图片

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第21张图片

镜像仓库里,基本信息里有代码可以供我们推送和拉取 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第22张图片

[root@Docker01 ~]# docker login --username=admin registry.cn-hangzhou.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@Docker01 ~]# docker tag nginx:1.14.2 registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse:v1.0
[root@Docker01 ~]# docker push registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse:v1.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse]
82ae01d5004e: Pushed 
b8f18c3b860b: Pushed 
5dacd731af1b: Pushed 
v1.0: digest: sha256:706446e9c6667c0880d5da3f39c09a6c7d2114f5a5d6b74a2fafd24ae30d2078 size: 948
[root@Docker01 ~]# docker logout registry.cn-hangzhou.aliyuncs.com
Removing login credentials for registry.cn-hangzhou.aliyuncs.com

推送后可以上传我们的版本 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第23张图片

当然,我们也可以去拉取,虽然是私有的,但是我们可以登录自己的账号拉取,注意账号用完及时删除,不然会很危险!!!存放账号密码的文件只是做了base64的加密!

[root@Docker02 ~]# docker login --username=admin registry.cn-hangzhou.aliyuncs.com
[root@Docker02 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse:v1.0
v1.0: Pulling from kotenspace/kotenwarehouse
Digest: sha256:706446e9c6667c0880d5da3f39c09a6c7d2114f5a5d6b74a2fafd24ae30d2078
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse:v1.0
registry.cn-hangzhou.aliyuncs.com/kotenspace/kotenwarehouse:v1.0
[root@Docker02 ~]# docker logout registry.cn-hangzhou.aliyuncs.com
Removing login credentials for registry.cn-hangzhou.aliyuncs.com

如果删除仓库,里面的镜像也会随之消失,跟harbor不一样,这个可以直接删外面,harbor需要先删里面的镜像再删外面项目。 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第24张图片

构建海外镜像技巧

github上有一些海外镜像,无法直接拉取使用,此时我们可以在github上编写dockerfile,FROM海外镜像,再用阿里云去拉取我们写的dockerfile并打包成镜像,这样我们的阿里云中就包含了我们的海外镜像。用阿里云的机器帮我们做事情,有点类似于借鸡生蛋!

新建仓库,设置公开-->在界面上直接新建文件,编写dockerfile-->dockerfile上FROM:<我们需要拉取的海外镜像

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第25张图片

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第26张图片

FROM gcr.io/cadvisor/cadvisor-amd64:v0.47.0

LABEL name=koten

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第27张图片

 阿里云创建镜像仓库 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第28张图片

 下一步,代码源选择github,按提示绑定github账号

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第29张图片

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第30张图片

 再次创建仓库,选择github代码源,此时显示了我们的账号 

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第31张图片

选择github的命名空间和仓库,选择海外机器构建,创建镜像仓库

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第32张图片

进入镜像仓库,在构建里添加规则 

 【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第33张图片

 我们这里选择主分支,因为github我们创建的那个项目上就是主分支

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第34张图片

 【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第35张图片

立即构建

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第36张图片

构建成功 

 此时镜像版本中成功显示,我们就可以正常在阿里云镜像仓库中拉取这个镜像了

【运维知识大神篇】运维人必学的Docker教程7(Harbor配置HTTPS证书的两种方式+Harbor两种方案实现高可用+镜像推送至Docker hub官方仓库和阿里云镜像仓库+拉取海外镜像技巧)_第37张图片


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

你可能感兴趣的:(运维知识分享,#,大神运维知识,docker,运维,容器,harbor,swarm,阿里云证书,构建镜像)