Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如:安全、标识和管理等,扩展了开源Docker Distribution。
作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor支持安装再多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。
另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
官网地址: https://vmware.github.io/harbor/cn/
官方github地址:https://github.com/vmware/harbor/
下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
cd /usr/local/src/
wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-offline-installer-v1.2.2.tgz
在线安装包:
wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-online-installer-v1.2.2.tgz
tar xvf harbor-offline-installer-v1.2.2.tgz
ln -sv /usr/local/src/harbor /usr/local/
cd /usr/local/harbor
grep "^[a-Z]" harbor.cfg
cd /usr/local/harbor
./prepare #更新配置
执行完后会在当前目录生成一个docker-compose.yml文件,用于配置数据目录等配置信息。
cd /usr/local/harbor
docker-compose stop
vim harbor.cfg
./prepare
docker-compose start
yum install python-pip
pip install --upgrade pip
pip install docker-compose
./install.sh #官方构建harbor和启动方式,推荐此方法,会下载官方的docker镜像
如果配置的是https的话,本地docker就不需要有任何操作就可以访问harbor了
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'
❗↑可能是版本不对,无效
❗↓可行
[root@gbase8c_private harbor]# cat /etc/docker/daemon.json
{
"insecure-registries":["192.168.56.199"],
"registry-mirrors":["https://pkjijpqo.mirror.aliyuncs.com"]
}
#其中192.168.56.199是我们部署harbor的地址,即hostname配置项值,配置完后需要重启docker服务
docker login 192.168.56.199
日志:
[root@gbase8c_private harbor]# docker login 192.168.56.199
Username: admin
Password:
Login Succeeded
docker load < /opt/nginx-1.10.3_docker.tar.gz
4.4.2 验证镜像导入成功
4.4.3 镜像打tag
修改images的名称,不修改成指定格式无法将镜像上传到harbor仓库,格式为:harborIP/项目名/image 名字:版本号
docker tag 192.168.56.199:5000/jack/nginx_1.10.3:v1 192.168.56.199/nginx/nginx_1.10.3:v1
docker images
日志:
[root@gbase8c_private harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 23 months ago 141MB
[root@gbase8c_private harbor]# docker tag nginx:latest 192.168.56.199/nginx/nginx:v1
[root@gbase8c_private harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 23 months ago 141MB
192.168.56.199/nginx/nginx v1 605c77e624dd 23 months ago 141MB
4.4.4 在harbor管理界面创建项目
4.4.5 将镜像push到harbor
格式为:docker push 镜像名:版本
docker push 192.168.56.199/nginx/nginx_1.10.3:v1
日志:
[root@gbase8c_private harbor]# docker push 192.168.56.199/nginx/nginx:v1
The push refers to repository [192.168.56.199/nginx/nginx]
d874fd2bc83b: Pushed
32ce5f6a5106: Pushed
f1db227348d0: Pushed
b8d6e692a25e: Pushed
e379e8aedd4d: Pushed
2edcec3590a4: Pushed
v1: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
4.4.6 harbor界面验证镜像上传成功
4.4.7 验证镜像信息
vim /etc/sysconfig/docker
4 OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'
docker pull
日志:
[root@gbase8c_1 ~]# docker pull 192.168.56.199/nginx/nginx:v1
v1: Pulling from nginx/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3
Status: Downloaded newer image for 192.168.56.199/nginx/nginx:v1
192.168.56.199/nginx/nginx:v1
[root@gbase8c_1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.199/nginx/nginx v1 605c77e624dd 23 months ago 141MB
docker run -d -p 80:80 -p 443:443
[root@gbase8c_1 ~]# docker run -d -p 80:80 -p 443:443 192.168.56.199/nginx/nginx:v1
fd35d375abede25eb4ce538b353218ea5b3041ad2c046ce8f75ddef05d182ae5
[root@gbase8c_1 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 [::]:443 [::]:*
LISTEN 0 128 [::]:80 [::]:*
Harbor支持基于策略的Docker镜像复制功能,这类似于MySQL的主从同步,其可以实现不同的数据中心、不同的运行环境之间同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作。
已经有很多互联网公司使用harbor搭建内网docker仓库的案例,并且还有实现了双向复制的案例,本文将实现单项复制的部署。
在从harbor也配置同步规则
openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048
openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt
日志:
[root@gbase8c_1 harbor]# openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048
Generating RSA private key, 2048 bit long modulus
...................................................+++
.................................................+++
e is 65537 (0x10001)
[root@gbase8c_1 certs]# openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt
参考:【Docker】Docker学习⑨ - 单机编排之Docker Compose