docker私有仓库搭建----harbor

harbor镜像私有仓库是VMware公司的一个开源项目,其强大之处在于可以提供多种功能:
1.可以通过图形化UI界面管理、检索镜像。
2.可以方便管理使用者的身份角色。
3.可以支持删除垃圾镜像,充分利用磁盘空间。
4.支持LDAP和AD认证。
5.也可以提供api接口提供多种功能。
6.后端存储可以与ceph或者swift等对接。

一、harbor的构成

docker 私有仓库权限 docker私有仓库harbor_私有仓库


harbor主要由多种容器构成,proxy接收web或者docker客户端的请求。

registry,主要负责存储镜像。

core service:是harbor的主要核心功能提供UI、秘钥和webhook等功能。

database:负责存储一些用户的相关信息,为core service提供服务。

log collector:为其他服务收集日志。

二、harbor仓库的搭建

1.首先需要解压harbor压缩包到:/usr/local目录下面。

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

docker 私有仓库权限 docker私有仓库harbor_私有仓库_02


2.修改harbor配置文件。其中的hostname需要改为本机的IP地址

docker 私有仓库权限 docker私有仓库harbor_上传_03


此外还有一些配置信息:

docker 私有仓库权限 docker私有仓库harbor_docker_04


docker 私有仓库权限 docker私有仓库harbor_私有仓库_05


docker 私有仓库权限 docker私有仓库harbor_私有仓库_06


以上这些配置信息,在修改之后需要重新用install.sh脚本进行重新安装。

其他的一些配置信息如,harbor的admin用户的用户名和密码修改不需要再次重新安装一遍harbor。

安装harbor服务

sh /usr/local/harbor/install.sh

最后看到出现这种画面就表示harbor完成了安装。

docker 私有仓库权限 docker私有仓库harbor_上传_07


我们可以通过docker ps -a,查看harbor开启了那些容器:如registry、ui、database等。

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_08


此外我们也可以使用容器编排工具查看每个容器具体的运行情况。

[root@harbor harbor]# docker-compose ps
       Name                     Command               State                                Ports                              
------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/harbor_adminserver       Up                                                                      
harbor-db            docker-entrypoint.sh mysqld      Up      3306/tcp                                                        
harbor-jobservice    /harbor/harbor_jobservice        Up                                                                      
harbor-log           /bin/sh -c crond && rm -f  ...   Up      127.0.0.1:1514->514/tcp                                         
harbor-ui            /harbor/harbor_ui                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
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp                                                        
[root@harbor harbor]#

需要注意的是:这条命令(docker-compose ps)必须在**/usr/local/harbor**路径下才能被使用,否则在其他路径下无法正常使用。

[root@harbor harbor]# cd /opt/
[root@harbor opt]# docker-compose ps
ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

3.登录到harborweb界面。在宿主机上通过游览器访问到harbor的前端

docker 私有仓库权限 docker私有仓库harbor_docker_09


这里我来仔细解释一下每一个具体的信息。

1.关于项目和镜像,镜像存在于项目之中,项目可以是管理员或者有权限的用户才可以创建。

docker 私有仓库权限 docker私有仓库harbor_docker_10


创建一个项目:

docker 私有仓库权限 docker私有仓库harbor_私有仓库_11


为了方便上传镜像,我们在本地终端登陆到harbor上。在登陆时不要使用localhost进行登陆。

docker login -u admin -p Harbor12345 http://127.0.0.1

成功登录到harbor私有仓库中。

docker 私有仓库权限 docker私有仓库harbor_docker_12


2.上传镜像:

为了可以上传镜像到私有仓库中,我们需要先对镜像进行标签修改。需要将每个镜像改为固定格式。

docker tag 原镜像 127.0.0.1/项目名称/镜像名称:镜像版本

本地上传镜像这里的IP地址需要的是127.0.0.1.

docker 私有仓库权限 docker私有仓库harbor_docker_13


上传完成我们可以在web端查看到镜像的信息。

docker 私有仓库权限 docker私有仓库harbor_docker_14


3.其他终端远程登录harbor私有仓库。

一开始是无法正常访问的,因为https的ssl机制,所以我们需要修改docker.servie文件。

docker 私有仓库权限 docker私有仓库harbor_私有仓库_15

vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.80.105 --containerd=/run/containerd/containerd.sock

重启进程和docker服务
systemctl daemon-reload
systemctl restart docker

docker 私有仓库权限 docker私有仓库harbor_docker_16


这样我就可以正常远程登录到harbor私有仓库中去了。

docker login -u admin -p Harbor12345 http://192.168.80.105

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_17

4.从其他终端上传镜像到harbor仓库中。
这里也需要修改镜像的标签。

docker tag harbor仓库的IP地址/项目名称/镜像名称:版本号
dcoker tag centos:7 192.168.80.105/test/centos:v1

上传至镜像仓库:

docker push 192.168.80.105/test/centos:v1

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_18


这样harbor仓库就完全搭建好了。

三、harbor仓库的管理操作

1.在生产环境中在需要维护harbor仓库时需要关闭其运行的所有容器,这时就需要用到docker-compose命令。
在**/usr/local/harbor**目录下运行:

docker-compose down -v

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_19


2.配置文件生效,除非你改了必要的参数需要重新进行安装harbor,即sh install.sh。否则其他的参数改动需要执行**./prepare**文件使得配置文件生效。

docker 私有仓库权限 docker私有仓库harbor_docker_20


最后重新开启harbor仓库的命令是:

docker-compose up -d

docker 私有仓库权限 docker私有仓库harbor_docker_21


docker 私有仓库权限 docker私有仓库harbor_上传_22

3.harbor的用户管理:

如何创建新用户:首先在用户管理处创建新的用户。

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_23


输入相应的用户名和密码,点击确定进行创建。

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_24


显示创建成功!

docker 私有仓库权限 docker私有仓库harbor_上传_25


如何管理一个用户:

docker 私有仓库权限 docker私有仓库harbor_docker_26


将用户添加到项目中去:

docker 私有仓库权限 docker私有仓库harbor_私有仓库_27


添加用户名和用户的权限

docker 私有仓库权限 docker私有仓库harbor_docker_28


用户成功添加到test的项目中。

docker 私有仓库权限 docker私有仓库harbor_上传_29


在终端上使用普通用户登陆到harbor仓库中。首先admin用户必须要退出登陆。

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_30


使用普通用户上传镜像:

在使用普通用户登录后,我们可以根据其权限上传镜像到相应的项目中去。这里上传了一个tomcat的镜像。

docker 私有仓库权限 docker私有仓库harbor_docker 私有仓库权限_31


tomcat的镜像成功上传到仓库中去。

docker 私有仓库权限 docker私有仓库harbor_私有仓库_32