本地镜像发布到私有库(Harbor)

Harbor介绍

  1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。2. 镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。
  2. harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
  3. harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。
  4. docker的registry是用本地存储或者s3都是可以的
  5. Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作
    在这里插入图片描述

Harbor主要组件

harbor-adminserver
配置管理中心
harbor-db
Mysql数据库
harbor-jobservice
负责镜像复制
harbor-log
记录操作日志
nginx
前端代理,负责前端页面和镜像上传/下载转发
redis
回话
registry
镜像存储

Harbor安装

1、参考文档及安装步骤梳理下载v1.4.0版本harbor:https://github.com/goharbor/harbor/releases?after=v1.5.0-rc5
安装参考文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
配置证书:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
1、 下载离线安装包
2、 安装docker
3、 安装docker-compose
4、 自签TLS证书
5、 Harbor安装与配置
6、 Docker主机访问Harbor

2、安装docker和docker-compose
docker已经安装,可参考其他笔记Docker介绍与安装
安装docker composecurl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version # 测试docker-compose是否安装好
docker-compose version 1.24.1, build 4667896b

或者
wget -c https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.25.5, build 8a1c60f6

3、安装Harbor
wget -c https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
tar xf harbor-offline-installer-v2.4.1.tgz -C /usr/local/
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
hostname: 10.20.19.102
#主机名修改为自己的ip地址

# https related config
  # https:
  # https port for harbor, default is 443     #因为未做https,所以将https全部注释
  #  port: 443
  # The path of cert and key files for nginx
  #  certificate: /your/certificate/path
  # private_key: /your/private/key/path
harbor_admin_password: 12345

#web界面登录密码:12345
#保存退出后,执行安装脚本
./install.sh

4.登录
admin/12345
查看容器状态
docker-compose ps

5.为Harbor配置https

1、简介

  1. 配置ssl证书https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
  2. 由于Harbor没有附带任何证书,所以它默认使用HTTP来服务注册表请求,但是,强烈建议为任何生产环境启用安全性。
  3. 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书。

2、获得CA证书颁发机构(CN为域名)

#创建一个ssl目录存放创建的证书
mkdir /apps/harbor/ssl
cd /apps/harbor/ssl
获得CA证书颁发机构(CN为域名,最好为主机名)
openssl genrsa -out ca.key 4096openssl req -x509 -new -nodes -sha512 -days 3650
-subj “/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=node02.harbor.com”
-key ca.key
-out ca.crt

3、获取服务器证书

  1. 假设注册表的主机名是node02.harbor.com,其DNS记录指向运行Harbor的主机。2. 在生产环境中,您首先应该从CA获得证书,在测试或开发环境中,您可以使用自己的CA。
  2. 证书通常包含一个.crt文件和一个.key文件,例如node02.harbor.com.crt和node02.harbor.com.key。

创建自己的私钥

openssl genrsa -out node02.harbor.com.key 4096

生成部署请求认证

如果使用像node02.harbor.com这样的FQDN连接注册表主机,则必须使用node02.harbor.com作为CN(通用名称)。

openssl req -sha512 -new
-subj “/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=node02.harbor.com”
-key node02.harbor.com.key
-out node02.harbor.com.csr

4、为注册的主机生成证书

  1. 无论您使用的是像node02.harbor.com这样的FQDN还是IP来连接注册表主机2. 都可以运行这个命令来生成符合Subject Alternative Name (SAN)和x509 v3扩展要求的注册表主机证书

生成v3.ext文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=node02.harbor.com
DNS.2=node02.harbor
DNS.3=harbor
EOF

生成证书

openssl x509 -req -sha512 -days 3650
-extfile v3.ext
-CA ca.crt -CAkey ca.key -CAcreateserial
-in node02.harbor.com.csr
-out node02.harbor.com.crt

5、为Harbor配置服务器证书和密钥

在获得node02.harbor.com.crt和node02.harbor.com.key文件之后,可以将它们放入/data/cert/这样的目录中

mkdir -p /data/cert
cp node02.harbor.com.crt /data/cert/
cp node02.harbor.com.key /data/cert/

6、为Docker配置服务器证书、密钥和CA

Docker守护进程将.crt文件解释为CA证书,将.cert文件解释为客户机证书# 将服务器node02.harbor.com.crt转换为node02.harbor.com.cert

openssl x509 -inform PEM -in node02.harbor.com.crt -out node02.harbor.com.cert

为docker部署 node02.harbor.com.cert、node02.harbor.com.key和ca.crt

mkdir -p /etc/docker/certs.d/node02.harbor.com/
cp node02.harbor.com.cert /etc/docker/certs.d/node02.harbor.com/
cp node02.harbor.com.key /etc/docker/certs.d/node02.harbor.com/
cp ca.crt /etc/docker/certs.d/node02.harbor.com/

7、配置Harbor

编辑文件端口,更新主机名并取消对https块的注释,更新属性证书和private_key

vim /usr/local/harbor/harbor.y#set hostname
hostname: node02.harbor.com
harbor_admin_password: 12345
http:
port: 80
https:

https port for harbor, default is 443

port: 443

The path of cert and key files for nginx

certificate: /data/cert/node02.harbor.com.crt
private_key: /data/cert/node02.harbor.com.key

8、为Harbor重新生成配置文件

#1、为Harbor重新生成配置文件./prepare
#2、如果Harbor已经运行,则停止并删除现有实例,镜像数据仍然保存在文件系统中
docker-compose down -v
#3、重启harbor
docker-compose up -d
#4、此时可以通过浏览器访问https: https://10.20.19.102/harbor/projects
#5、可以在node02.harbor.com本机上测试docker登录
docker login node02.harbor.com

9、在其他docker机器中配置登录harbor(10.20.19.101)

mkdir -p /etc/docker/certs.d/node02.harbor.comscp -r root@10.20.19.102:/etc/docker/certs.d/node02.harbor.com/* /etc/docker/certs.d/node02.harbor.com/
vi /usr/lib/systemd/system/docker.service # 添加–insecure-registry
‘’’
ExecStart=/usr/bin/dockerd --insecure-registry 10.20.19.102
‘’’

systemctl daemon-reload
systemctl restart docker.service # 重启docker

docker login node02.harbor.com
连接后就可以pull harbor上的镜像了

推送新镜像至Harbor配置docker配置文件

[root@node02 system]# cat /etc/docker/daemon.json{
“registry-mirrors”: [“https://ygne5xlj.mirror.aliyuncs.com”],
“insecure-registries”: [“https://node02.harbor.com”]
}
本地镜像打标签后推送在harbor中寻求资料
在这里插入图片描述

docker push https://node02.harbor.com/test/ubuntu:1.0
docker push node02.harbor.com/test/ubuntu:1.0
推送成功

拉取harbor上的镜像
在这里插入图片描述

docker pull
node02.harbor.com/test/ubuntu@sha256:4c775d71fbff6002ec05b60254e9642f26145bd18062e6341c389ca4483e8960

以上都是我亲测可行的步骤,是我自己学习中的笔记,如有不清晰的地方,欢迎指正和提问,谢谢~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值