Harbor私有仓库
Harbor是什么
- Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
- Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。
- 服务端主机需要安装 Python、Docker 和 Docker Compose。
Harbor组件
Harbor部署
实验环境
- 每台服务器都部署docker环境
主机名 | IP地址 | |
---|---|---|
Harbor服务器 | harbor | 20.0.0.10 |
测试服务器 | docker | 20.0.0.20 |
Harbor服务器配置
1、下载 Harbor 安装程序
[root@harbor ~]# wget http:// harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
[root@harbor ~]# ll
-rw-r--r-- 1 root root 533765727 12月 1 11:37 harbor-offline-installer-v1.2.2.tgz
2、解压数据包
[root@harbor ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
3、配置 Harbor 参数文件
[root@harbor ~]# vim /usr/local/harbor/harbor.cfg
hostname = 20.0.0.10 #第五行修改
4、上传docker-compose工具
[root@harbor ~]# ll
-rw-r--r-- 1 root root 10867152 11月 30 11:42 docker-compose
[root@harbor ~]# chmod +x docker-compose
[root@harbor ~]# mv docker-compose /usr/bin/
5、启动 Harbor
[root@harbor ~]# sh /usr/local/harbor/install.sh
6、查看 Harbor 启动镜像
[root@harbor ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vmware/harbor-log v1.2.2 36ef78ae27df 3 years ago 200MB
vmware/harbor-jobservice v1.2.2 e2af366cba44 3 years ago 164MB
vmware/harbor-ui v1.2.2 39efb472c253 3 years ago 178MB
vmware/harbor-adminserver v1.2.2 c75963ec543f 3 years ago 142MB
vmware/harbor-db v1.2.2 ee7b9fa37c5d 3 years ago 329MB
vmware/nginx-photon 1.11.13 6cc5c831fc7f 3 years ago 144MB
vmware/registry 2.6.2-photon 5d9100e4350e 3 years ago 173MB
vmware/postgresql 9.6.4-photon c562762cbd12 3 years ago 225MB
vmware/clair v2.0.1-photon f04966b4af6c 3 years ago 297MB
vmware/harbor-notary-db mariadb-10.1.10 64ed814665c6 3 years ago 324MB
vmware/notary-photon signer-0.5.0 b1eda7d10640 3 years ago 156MB
vmware/notary-photon server-0.5.0 6e2646682e3c 3 years ago 157MB
photon 1.0 e6e4e4a2ba1b 4 years ago 128MB
[root@harbor ~]#
7、查看容器
[root@harbor ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3dffd8966c9 vmware/harbor-jobservice:v1.2.2 "/harbor/harbor_jobs…" About a minute ago Up About a minute harbor-jobservice
38f435a5f79f vmware/nginx-photon:1.11.13 "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp nginx
4663d494eefa vmware/harbor-ui:v1.2.2 "/harbor/harbor_ui" About a minute ago Up About a minute harbor-ui
297d6ad10ddc vmware/registry:2.6.2-photon "/entrypoint.sh serv…" About a minute ago Up About a minute 5000/tcp registry
5c6baedc532f vmware/harbor-adminserver:v1.2.2 "/harbor/harbor_admi…" About a minute ago Up About a minute harbor-adminserver
93ce6a03a231 vmware/harbor-db:v1.2.2 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp harbor-db
21db3c0a4a2f vmware/harbor-log:v1.2.2 "/bin/sh -c 'crond &…" About a minute ago Up About a minute 127.0.0.1:1514->514/tcp harbor-log
测试
Harbor服务器设置
1、使用浏览器访问harbor管理界面
2、登录
默认用户名:admin
默认密码:Harbor12345
3、创建项目
点击创建项目--------》
4、此时可使用 Docker 命令在本地登录
[root@harbor ~]# docker login -u admin -p Harbor12345 http://127.0.0.1
5、Harbor服务器下载一个镜像用于测试
[root@harbor ~]# docker pull nginx
6、修改镜像标签
[root@harbor ~]# docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1
7、上传镜像
[root@harbor ~]# docker push 127.0.0.1/myproject-kgc/nginx:v1
8、查看是否上传成功
节点服务器下载镜像
1、修改docker.service文件
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 20.0.0.10 --containerd=/run/containerd/containerd.sock #修改:增加--insecure-registry 20.0.0.10
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
2、重启docker
[root@[root@docker ~]# systemctl restart docker.servicedocker ~]# systemctl daemon-reload
3、登录
[root@docker ~]# docker login -u admin -p Harbor12345 http://20.0.0.10
4、下载仓库镜像
[root@docker ~]# docker pull 20.0.0.10/myproject-kgc/nginx:v1
5、查看镜像是否下载成功
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
20.0.0.10/myproject-kgc/nginx v1 bc9a0695f571 6 days ago 133MB
节点服务器上传镜像
1、下载一个镜像用于上传测试
[root@docker ~]# docker pull httpd
2、修改镜像标签
[root@docker ~]# docker tag httpd:latest 20.0.0.10/myproject-kgc/http:v1
3、上传镜像
[root@docker ~]# docker push 20.0.0.10/myproject-kgc/http:v1
4、查看是否上传成功
Harbor服务下载刚刚上传的http镜像
1、下载镜像
[root@harbor ~]# docker pull 127.0.0.1/myproject-kgc/http:v1
2、查看镜像是否下载成功
[root@harbor ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
127.0.0.1/myproject-kgc/http v1 0a30f4c29d25 13 days ago 138MB
维护管理harbor
- 可以使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与 docker-compose.yml 相同的目录中运行
- 使用docker-compose命令/usr/bin下面必须有docker-compose工具
- 要更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;然 后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour
Harbor服务器关闭harbor
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# docker-compose down -v
Harbor服务器启动harbor
[root@harbor harbor]# docker-compose up -d
创建新用户管理仓库
1、创建用户
2、让新用户可以管理仓库
3、切换用户登录
4、节点服务器上切换用户
4.1、注销admin账户的登录
[root@docker ~]# docker logout 20.0.0.10
4.2、登录新用户
[root@docker ~]# docker login 20.0.0.10
Username: abc
Password:
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
4、使用新用户下载仓库镜像
4.1、清空镜像用于测试
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
20.0.0.10/myproject-kgc/nginx v1 bc9a0695f571 6 days ago 133MB
httpd latest 0a30f4c29d25 13 days ago 138MB
20.0.0.10/myproject-kgc/http v1 0a30f4c29d25 13 days ago 138MB
[root@docker ~]# docker rmi 20.0.0.10/myproject-kgc/nginx:v1
[root@docker ~]# docker rmi 20.0.0.10/myproject-kgc/http:v1
[root@docker ~]# docker rmi httpd:latest
4.2、下载镜像测试
[root@docker ~]# docker pull 20.0.0.10/myproject-kgc/nginx:v1
4.3.、查看镜像是否下载成功
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
20.0.0.10/myproject-kgc/nginx v1 bc9a0695f571 6 days ago 133MB
移除 Harbor
移除 Harbor 服务容器同时保留镜像数据/数据库
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# docker-compose down -v
如需重新部署,需要移除 Harbor 服务容器全部数据
持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的
/var/log/Harbor/目录下。
rm -rf /data/database/
rm -rf /data/registry/