一、Harbor简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
二、下载和配置Harbor
#环境说明
系统版本: CentOS7.x
docker-ce: 18.03.1-ce
docker-compose: version 1.22.0
Harbor: v1.7.0
安装方式: 在线安装
安装位置: /volume1/harbor
安装Harbor需要先安装docker和docker-compose,这里就不演示了。
1.下载安装包
从 github harbor 官网 release 页面下载指定版本的安装包,因为是谷歌的地址,国内下载不了,饭墙下载后在传到服务器上即可。
#在线安装包
$ wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.0.tgz
$ tar xvf harbor-online-installer-v1.7.0.tgz
#也可以下载下面的文件进行离线安装
https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.0-rc2.tgz
2.配置Harbor
解压缩之后,找到/volume1/harbor/harbor.cfg
文件,该文件就是Harbor的配置文件。
vim /usr/local/harbor/harbor.cfg
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 192.168.1.11
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123
#邮箱根据情况配置,发送重置密码邮件时使用,也可以不配置
email_server = smtp.qinzc.me
email_server_port = 25
email_username = admin@qinzc.me
email_password = 12345678
email_from = admin <admin@qinzc.me>
email_ssl = false
#设置只有管理员可以创建项目
project_creation_restriction = adminonly
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
上边根据情况修改,没提到的可以不用管,按默认设置即可。
三、安装Harbor
执行安装脚本
/volume1/harbor/install.sh
修改完配置文件后,在的当前目录执行./install.sh
,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务,Harbor依赖的镜像及启动服务如下:
root@backup-server:/volume1/harbor # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/chartmuseum-photon v0.7.1-v1.7.0 666d74cc236a 2 weeks ago 111MB
goharbor/harbor-migrator v1.7.0 482699d98927 2 weeks ago 799MB
goharbor/redis-photon v1.7.0 8adff755797f 2 weeks ago 96.1MB
goharbor/clair-photon v2.0.7-v1.7.0 7e72f6ba05bd 2 weeks ago 165MB
goharbor/notary-server-photon v0.6.1-v1.7.0 b4a22960dfce 2 weeks ago 102MB
goharbor/notary-signer-photon v0.6.1-v1.7.0 bb0db7ebd1de 2 weeks ago 99.6MB
goharbor/harbor-registryctl v1.7.0 1906a8b84fa5 2 weeks ago 101MB
goharbor/registry-photon v2.6.2-v1.7.0 677f21b09362 2 weeks ago 86.4MB
goharbor/nginx-photon v1.7.0 6ed96fc73f83 2 weeks ago 35.5MB
goharbor/harbor-log v1.7.0 722fa4a77846 2 weeks ago 81MB
goharbor/harbor-jobservice v1.7.0 effd390c0cd4 2 weeks ago 83.8MB
goharbor/harbor-core v1.7.0 2ebd58ce5638 2 weeks ago 95.2MB
goharbor/harbor-portal v1.7.0 72a291f86bab 2 weeks ago 40.2MB
goharbor/harbor-adminserver v1.7.0 9f850341a571 2 weeks ago 72MB
goharbor/harbor-db v1.7.0 45d94fe5fee5 2 weeks ago 133MB
microbox/dockerui latest c3452e32cfe9 3 years ago 10.4MB
root@backup-server:/volume1/harbor # docker-compose ps
Name Command State Ports
harbor-adminserver /harbor/start.sh Restarting
harbor-core /harbor/start.sh Up (health: starting)
harbor-db /entrypoint.sh postgres Up (healthy) 5432/tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ … Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy) 80/tcp
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:433->443/tcp, 0.0.0.0:4433->443/tcp, 0.0.0.0:80->80/tcp
redis docker-entrypoint.sh redis … Up 6379/tcp
registry /entrypoint.sh /etc/regist … Up (healthy) 5000/tcp
registryctl /harbor/start.sh Up (healthy)
启动完成后,访问刚设置的hostname
设置的即可 进行管理http://192.168.1.11
,可以修改docker-compose.yml文件更改对应服务的端口映射。 自此私有仓库搭建完毕。
四、客户端配置
因为docker 默认不支持http方式登陆,所以客户端要以http方式登陆,需修改下配置。
方法一:
vim vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd –insecure-registry 192.168.1.11 #增加镜像地址
方法二:
创建/etc/docker/daemon.json
文件,在文件中指定仓库地址
# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["192.168.1.11"] }
EOF
完成后从载配置,重启docker
systemctl daemon-reload
systemctl restart docker
五、测试上传和下载镜像
1.客户端登陆
docker login 192.168.1.11
Username (admin):
Password:
Login Succeeded
2.创建Dockerfile
vim Dockerfile
FROM centos:centos7.1.1503
ENV TZ "Asia/Shanghai"
3.创建镜像
docker build -t 192.168.1.11/library/centos7.1:0.1 .
4.把镜像push到Harbor
docker push 192.168.1.11/library/centos7.1:0.1
如果是从其他仓库pull下来的镜像,记得先执行 docker tag
给镜像做tag 才能push,例如:
docker pull busybox
docker tag busybox:latest 192.168.1.11/library/busybox:latest
docker push 192.168.1.11/library/busybox:latest
格式如下:
#docker tag 镜像 域名/项目名称/镜像名:版本docker tag SOURCE_IMAGE[:TAG] 192.168.1.11/library/IMAGE[:TAG]
# docker push 更改tag后的镜像名docker push 192.168.1.11/library/IMAGE[:TAG]
5.登录web页面查看镜像
即可看到刚刚上传的镜像。
6.拉取上传到Harbor的镜像
docker pull 192.168.1.11/track/busybox:latest
请登录后查看评论内容