docker私有仓库搭建----harbor
harbor镜像私有仓库是VMware公司的一个开源项目,其强大之处在于可以提供多种功能:
1.可以通过图形化UI界面管理、检索镜像。
2.可以方便管理使用者的身份角色。
3.可以支持删除垃圾镜像,充分利用磁盘空间。
4.支持LDAP和AD认证。
5.也可以提供api接口提供多种功能。
6.后端存储可以与ceph或者swift等对接。
一、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/
2.修改harbor配置文件。其中的hostname需要改为本机的IP地址
此外还有一些配置信息:
以上这些配置信息,在修改之后需要重新用install.sh脚本进行重新安装。
其他的一些配置信息如,harbor的admin用户的用户名和密码修改不需要再次重新安装一遍harbor。
安装harbor服务
sh /usr/local/harbor/install.sh
最后看到出现这种画面就表示harbor完成了安装。
我们可以通过docker ps -a,查看harbor开启了那些容器:如registry、ui、database等。
此外我们也可以使用容器编排工具查看每个容器具体的运行情况。
[root@harbor harbor]# docker-compose psName 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 anyparent. Are you in the right directory?Supported filenames: docker-compose.yml, docker-compose.yaml
3.登录到harborweb界面。在宿主机上通过游览器访问到harbor的前端
这里我来仔细解释一下每一个具体的信息。
1.关于项目和镜像,镜像存在于项目之中,项目可以是管理员或者有权限的用户才可以创建。
创建一个项目:
为了方便上传镜像,我们在本地终端登陆到harbor上。在登陆时不要使用localhost进行登陆。
docker login -u admin -p Harbor12345 http://127.0.0.1
成功登录到harbor私有仓库中。
2.上传镜像:
为了可以上传镜像到私有仓库中,我们需要先对镜像进行标签修改。需要将每个镜像改为固定格式。
docker tag 原镜像 127.0.0.1/项目名称/镜像名称:镜像版本
本地上传镜像这里的IP地址需要的是127.0.0.1.
上传完成我们可以在web端查看到镜像的信息。
3.其他终端远程登录harbor私有仓库。
一开始是无法正常访问的,因为https的ssl机制,所以我们需要修改docker.servie文件。
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
这样我就可以正常远程登录到harbor私有仓库中去了。
docker login -u admin -p Harbor12345 http://192.168.80.105
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
这样harbor仓库就完全搭建好了。
三、harbor仓库的管理操作
1.在生产环境中在需要维护harbor仓库时需要关闭其运行的所有容器,这时就需要用到docker-compose命令。
在**/usr/local/harbor**目录下运行:
docker-compose down -v
2.配置文件生效,除非你改了必要的参数需要重新进行安装harbor,即sh install.sh。否则其他的参数改动需要执行**./prepare**文件使得配置文件生效。
最后重新开启harbor仓库的命令是:
docker-compose up -d
3.harbor的用户管理:
如何创建新用户:首先在用户管理处创建新的用户。
输入相应的用户名和密码,点击确定进行创建。
显示创建成功!
如何管理一个用户:
将用户添加到项目中去:
添加用户名和用户的权限
用户成功添加到test的项目中。
在终端上使用普通用户登陆到harbor仓库中。首先admin用户必须要退出登陆。
使用普通用户上传镜像:
在使用普通用户登录后,我们可以根据其权限上传镜像到相应的项目中去。这里上传了一个tomcat的镜像。
tomcat的镜像成功上传到仓库中去。