Harbor 介绍 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文。 Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。 安装方式: -在线安装程序:安装程序从Docker hub下载Harbor的图像。因此,安装程序的尺寸非常小。
-脱机安装程序:当主机没有Internet连接时使用此安装程序。安装程序包含预先构建的图像,因此其大小更大。
harbor 部署 开源项目地址:https://github.com/vmware/harbor 官方安装说明:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
Docker安装 卸载老docker版本 1 2 3 4 5 6 7 8 9 10 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装 docker repository 1 2 3 4 5 6 7 8 9 $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 $ sudo yum-config-manager \ --add -repo \ https: //download.docker.com /linux/centos/docker-ce .repo $ yum list docker-ce --showduplicates | sort -r $ sudo yum install docker-ce -y $ systemctl start docker
安装docker-compose1 [root@Pro harbor-1.5 .3 ]# yum install python2-pip -y && yum install docker-compose -y
修改docker加速 1 2 3 4 5 6 7 8 9 10 11 vim /etc/docker/daemon.json { "registry-mirrors" : [ "https://registry.docker-cn.com" ,], "max-concurrent-downloads" : 10 , "log-driver" : "json-file" , "log-level" : "warn" , "log-opts" : { "max-size" : "10m" , "max-file" : "3" } }
部署harbor 下载安装包并解压: 1 2 3 [root@Pro ~]# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-online-installer-v1.6.0.tgz [root@Pro ~]# tar -zxvf harbor-online-installer-v1.6.0.tgz [root@Pro ~]# vi harbor/harbor.cfg
修改harbor配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@Pro ~] hostname =harbor.idcsec.com ui_url_protocol = http harbor_admin_password = Harbor12345 auth_mode = db_auth db_password = root123 self_registration= on use_compressed_js= on max_job_workers= 10 verify_remote_cert= on customize_crt= on
配置存储后端(可选) 默认情况下,Harbor将图像存储在本地文件系统中。在生产环境中,您可以考虑使用其他存储后端而不是本地文件系统,如S3,OpenStack Swift,Ceph等。您需要更新的是storage文件中的部分common/templates/registry/config.yml
安装harbor 1 2 3 4 5 6 7 8 9 10 11 12 [root@Pro ~]# ./harbor/install.sh [root@Pro harbor]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------------ harbor-adminserver /harbor/start.sh Up harbor-db /entrypoint.sh postgres Up 5432 /tcp harbor-jobservice /harbor/start.sh Up harbor-log /bin/sh -c /usr/local/bin/ ... Up 127.0 .0 .1 :1514 ->10514 /tcp harbor-ui /harbor/start.sh Up nginx nginx -g daemon off; Up 0.0 .0 .0 :443 ->443 /tcp, 0.0 .0 .0 :4443 ->4443 /tcp, 0.0 .0 .0 :80 ->80 /tcp redis docker-entrypoint.sh redis ... Up 6379 /tcp registry /entrypoint.sh /etc/regist ... Up 5000 /tcp
登录仓库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@Pro harbor] Username : adminPassword : Error response from daemon : Get https ://harbor.idcsec.com/v2/: dial tcp 47.94.253.198:443: connect: connection refused // 配置的是http,docker login默认走的是https. [root@Pro ~] { "registry-mirrors" : ["https://registry.docker-cn.com" , "https://docker.mirrors.ustc.edu.cn" ], "insecure-registries" :["harbor.idcsec.com" ], "max-concurrent-downloads" : 10 , "log-driver" : "json-file" , "log-level" : "warn" , "log-opts" : { "max-size" : "10m" , "max-file" : "3" } } [root@Pro harbor]
测试push镜像到harbor 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@Pro harbor]# docker login harbor.idcsec.com Username: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https: //docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@Pro harbor]# docker pull busybox Using default tag: latest latest: Pulling from library/busybox8 c5a7da1afbc: Pull complete Digest: sha256:cb63aa0641a885f54de20f61d152187419e8f6b159ed11a251a09d115fdff9bdStatus: Downloaded newer image for busybox:latest[root@Pro harbor]# docker tag busybox:latest harbor.idcsec.com/pro/busybox:latest [root@Pro harbor]# docker push harbor.idcsec.com/pro/busybox:latest The push refers to repository [harbor.idcsec.com/pro/busybox] f9d9e4e6e2f0: Pushed latest: digest: sha256:5e8 e0509e829bb8f990249135a36e81a3ecbe94294e7a185cc14616e5fad96bd size: 527
配置存储 默认情况下,harbor把镜像存储在本地文件系统,在生产环境中,你可能考虑用其他的存储替代本地存储,比如S3, Openstack Swift, Ceph等等。你需要修改 common/templates/registry/config.yml 中的 storage 段。默认情况下,registrys数据被持久化在宿主机的/data/目录下可以修改docker-compose.yml /data/registry:/storage:z。甚至你删除harbor容器或者重新被创建,这部分数据也不会改变。
清理镜像空间 首先去ui界面删除不要需要的镜像,这个时候这个镜像并不会从磁盘上面清除还需要通过GC来删除。 要启用垃圾回收(GC),首先要关闭Harbor服务,然后再执行清理命令 在harbor宿主机上执行如下的命令: 使用–dry-run参数运行容器,查看到将要删除的镜像,不删除任何数据 也是直接使用docker-compose.yml里面的镜像goharbor/registry-photon:v2.6.2-v1.6.21 2 3 du -sh /data/ registry/docker/ registry/v2/ docker-compose stop docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.1-photon garbage-collect --dry-run / etc/registry/ config.yml
不使用–dry-run参数,将删除相关镜像1 2 docker run -it docker-compose start
https://github.com/goharbor/harbor/blob/master/docs/user_guide.md