文章目录
- 一、什么是Harbor
- 二、搭建私有仓库
- 1.安装docker-ce
- 2.安装软件库包
- 3.创建认证
- 三、在另一台==已安装docker==的主机上
- 四、搭建Harbor
- 测试
docker hub虽然方便,但是还是有限制:
• 需要internet连接,速度慢
• 所有人都可以访问
• 由于安全原因企业不允许将镜像放到外网
• 好消息是docker公司已经将registry开源,我们可以快速构建企业私有仓库
一、什么是Harbor
Harbor是一个开源的注册表,它通过策略和基于角色的访问控制来保护工件,确保图像被扫描,没有漏洞,并签署图像为可信。Harbor是CNCF的一个毕业项目,提供合规性、性能和互操作性,帮助你在Kubernetes和Docker等云原生计算平台上一致、安全地管理工件。
二、搭建私有仓库
1.安装docker-ce
详情见此文:Linux企业应用——Docker(一)之初步了解Docker以及Docker的安装
2.安装软件库包
yum install -y openssl11-1.1.1k-2.el7.x86_64.rpm openssl11-libs-1.1.1k-2.el7.x86_64.rpm
3.创建认证
其中xuan.cn
,DNS中的registry.xuan.cn
替换为自己想要的地址
mkdir -p certs
openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/xuan.cn.key -addext "subjectAltName = DNS:registry.xuan.cn" -x509 -days 365 -out certs/xuan.cn.crt
其中Common Name (eg, your name or your server's hostname) []:registry.xuan.cn
务必要和上方DNS解析中保持一致
[root@k8s2 ~]# openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/xuan.cn.key -addext "subjectAltName = DNS:registry.xuan.cn" -x509 -days 365 -out certs/xuan.cn.crt
Can't load /root/.rnd into RNG
140061807077184:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=/root/.rnd
Generating a RSA private key
.....................................................................................................++++
.............................................++++
writing new private key to 'certs/xuan.cn.key'
-----
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) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:xuanlucky
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:registry.xuan.cn
Email Address []:sss@123
添加解析
vim /etc/hosts
主机ip 域名
172.27.84.9 registry.xuan.cn
重建registry容器
[root@k8s2 ~]# docker run -d -v /opt/registry:/var/lib/registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/xuan.cn.crt -e REGISTRY_HTTP_TLS_KEY=/certs/xuan.cn.key -p 443:443 registry
f3b05c84b90e5f3a6e38bf90f2dc6028ea4139e0c5814aa45f0a86ca488cc282
4.创建目录,拷贝认证文件
mkdir -p /etc/docker/certs.d/registry.xuan.cn
cp /root/certs/xuan.cn.crt /etc/docker/certs.d/registry.xuan.cn/ca.crt
5.上传镜像
docker tag nginx:latest registry.xuan.cn/nginx:v1
docker push registry.xuan.cn/nginx:v1
三、在另一台已安装docker的主机上
1.添加解析
vim /etc/hosts
主机ip 域名
172.27.84.9 registry.xuan.cn
2.添加镜像私有仓库
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.xuan.cn"]
}
3.重启docker,并查看
systemctl restart docker
docker info
4.创建目录,拷贝认证文件
mkdir -p /etc/docker/certs.d/registry.xuan.cn
scp 172.27.84.9:certs/xuan.cn.crt /etc/docker/certs.d/registry.xuan.cn/ca.crt
5.测试:
从仓库拉取镜像
docker pull registry.xuan.cn/nginx:v1
四、搭建Harbor
软件下载: https://github.com/goharbor/harbor/releases
依赖性: docker 17.06.0-ce+ and docker-compose 1.18.0+
为了方便起见
将xuan.cn.crt,xuan.cn.key移动至/data目录
mv /root/certs/* /data/certs
1.解压离线安装包
tar zxf harbor-offline-installer-v2.5.0.tgz
2.编辑harbor配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
hostname: registry.xuan.cn
http:
port: 80
https:
port: 443
certificate: /data/certs/xuan.cn.crt
private_key: /data/certs/xuan.cn.key
harbor_admin_password: xuanlucky
database:
password: xuanlucky
3.docker-compose安装
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
mv docker-compose-linux-x86_64-v2.5.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
4.执行安装
./install.sh
测试
浏览器访问搭建的主机的ip地址,登录harbor