通过Harbor构建docker私服仓库
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,它扩展了开源的Docker Distribution,通过添加一些企业必需的功能特性,如安全、标识和管理等。Harbor由VMware公司开发并开源,旨在帮助用户迅速搭建一个企业级的Docker Registry服务。
作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全,提升了用户使用Registry构建和运行环境传输镜像的效率。它支持安装在多个Registry节点的镜像资源复制,确保数据和知识产权在公司内部网络中管控。此外,Harbor还提供了高级的安全特性,如用户管理、访问控制和活动审计等。
官网地址:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.
配置要求:
安装 harbor 的机器,机器需要的内存至少要 2G
一、为 Harbor 自签发证书
需先安装openssl这里不进行赘述
【1】生成ca证书
openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/CN=harbor23.com" -key ca.key -out ca.crt
【2】生成服务器证书
创建私钥
openssl genrsa -out server.key 4096
生成签名
openssl req -new -sha512 -subj "/CN=harbor23.com" -key server.key -out server.csr
生成一个包含特定扩展字段的X.509证书配置文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]DNS.1=
harbor23.com
EOF
生成证书
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
复制服务器证书到机器目录下
cp server.crt /etc/docker/certs.d/harbor23.com/server.crt
二、安装 harbor
mkdir /data/install -p cd /data/install/
【1】 下载harbor
cd /data/install/
把 harbor 的离线包 harbor-offline-installer-v2.3.0-rc3.tgz 上传到这个目录,
离线包在课件 里提供了 下载 harbor 离线包的地址: https://github.com/goharbor/harbor/releases/tag/
【2】解压
tar -zxvf harbor-offline-installer-v2.3.0-rc3.tgz cd harbor cp harbor.yml.tmpl harbor.yml vim harbor.yml
【3】修改配置文件:
hostname: harbor
修改 hostname,可以自己定义不能用localhost, harbor23.com
协议用 https
certificate: /data/ssl/server.crt 指向之前生成的证书
private_key: /data/ssl/harbor.key 指向之前生成的私钥
邮件和 ldap 不需要配置,在 harbor 的 web 界面可以配置 其他配置采用默认即可 修改之后保存退出
注:harbor 默认的账号密码:admin/Harbor12345
【4】安装
安装 harbor 需要的离线镜像包 docker-harbor-2-3-0.tar.gz 在课件,可上传到 harbor 机器, 执行
docker load -i 解压
docker load -i docker-harbor-2-3-0.tar.gz 加载镜像
cd /data/install/harbor
./install.sh 成功安装后会生成docker-compose文件
扩展:
如何停掉 harbor:
cd /data/install/harbor
docker-compose stop
如何启动 harbor:
cd /data/install/harbor
docker-compose start
如果 docker-compose start 启动 harbor 之后,还是访问不了,那就需要重启虚拟机
Harbor 图像化界面使用说明
在浏览器输入: https://harbor23.com
账号:admin
密码:Harbor12345
输入账号密码出现如下:
所有基础镜像都会放在 library 里面,这是一个公开的镜像仓库
新建项目->起个项目名字 test(把访问级别公开那个选中,让项目才可以被公开使用)
三、测试使用 harbor 私有镜像仓库
【1】修改 docker 配置
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com"], "insecure-registries": ["192.168.40.181","localhost"]
}
【2】修改配置之后使配置生效
systemctl daemon-reload && systemctl restart docker
查看 docker 是否启动成功
systemctl status docker
显示如下,说明启动成功:
Active: active (running) since Fri … ago
注意: 配置新增加了一行内容如下: "insecure-registries":["192.168.40.181"], 上面增加的内容表示我们内网访问 harbor 的时候走的是 http,192.168.40.181 是安装 harbor 机器 的 ip
【3】登录 harbor
docker login harbor23.com
Username:admin
Password: Harbor12345
【4】上传镜像
导入 tomcat 镜像,tomcat.tar.gz 在课件里
docker load -i tomcat.tar.gz
把 tomcat 镜像打标签
docker tag tomcat:latest 192.168.40.181/test/tomcat:v1
执行上面命令就会把 192.168.40.181/test/tomcat:v1 上传到 harbor 里的 test 项目下
docker push 192.168.40.181/test/tomcat:v1
执行上面命令就会把 192.168.40.181/test/tomcat:v1 上传到 harbor 里的 test 项目下
至此harbor私服能够正常使用
【5】机器上删除镜像
docker rmi -f 192.168.40.181/test/tomcat:v1
【6】拉取镜像
docker pull 192.168.40.181/test/tomcat:v1
四、问题汇总
1、docker login harbor23.com
登录时报 x509: certificate signed by unknown authority;在需要登录的主机上配置
修改 sudo vi /etc/docker/daemon.json
{ "insecure-registries": [ "harbor23.com", "10.32.23.77" ], "registry-mirrors": [ "https://2wk9cvvl.mirror.aliyuncs.com" ] }
然后重启docker服务 service docker restart
2、docker网络问题,centos容器无法访问harbor23.com
vi /etc/hosts
将harbor23.com 指向host.docker.internal 地址
容器之间相互访问可以通过host.docker.internal 进行访问