一、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
参考:https://www.cnblogs.com/pangguoping/p/7650014.html
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
说道:Thanks for finally talking about >搭建企业级Docker私有仓库(Harbor) - 橙子柠檬's
Blog <Liked it!