docker-harbor私有仓库部署

什么是Harbor

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。

Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

Harbor的特性

1、基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
2、基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
3、支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
4、镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
5、图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
6、审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
7、支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
8、Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件。

Harbor 部署:

①部署docker-compose服务

②部署harbor服务

下载或上传 Harbor 安装程序
Harbor的压缩包下载地址:https://github.com/goharbor/harbor/releases

wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz

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

修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.80.10
--59行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345

docker-harbor私有仓库部署_第1张图片
在这里插入图片描述

③启动harbor

cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 以 pull 镜像并启动容器

docker-harbor私有仓库部署_第2张图片
docker-harbor私有仓库部署_第3张图片

④查看 Harbor 启动镜像

cd /usr/local/harbor/
docker-compose ps

docker-compose up -d      #启动
docker-compose stop       #停止
docker-compose restart    #重新启动

docker-harbor私有仓库部署_第4张图片
登录harbor:

(1)浏览器访问:http://192.168.146.20 登录 Harbor WEB UI 界面,
默认的管理员用户名和密码是 admin/Harbor12345

docker-harbor私有仓库部署_第5张图片
设置私有仓库:
docker-harbor私有仓库部署_第6张图片
上传镜像到公开仓库不需要登录私有仓库;

上传镜像到私有仓库需要登录私有仓库;
docker-harbor私有仓库部署_第7张图片

//下载镜像进行测试
docker pull nginx
 
//将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1
 
//上传镜像到 Harbor
docker push 127.0.0.1/myproject-kgc/nginx:v1

docker-harbor私有仓库部署_第8张图片
docker-harbor私有仓库部署_第9张图片
在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息
docker-harbor私有仓库部署_第10张图片

在其他客户端上传镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。
出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,
但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。
 
docker login -u admin -p Harbor12345 http://192.168.146.20
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.146.20/v2/: dial tcp 192.168.146.20:443: connect: connection refused

docker-harbor私有仓库部署_第11张图片

在 Docker 客户端配置操作

//解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.146.20 --containerd=/run/containerd/containerd.sock
或
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.146.20

docker-harbor私有仓库部署_第12张图片

重启 Docker,再次登录
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

再次登录 Harbor
docker login -u admin -p Harbor12345 http://192.168.146.20
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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/.docker/config.json,下次登录时可直接使用凭据登录 Harbor

docker-harbor私有仓库部署_第13张图片
docker-harbor私有仓库部署_第14张图片
下载镜像进行测试
docker pull 192.168.146.20/myproject-kgc/nginx:v1
docker-harbor私有仓库部署_第15张图片
上传镜像进行测试
docker pull cirros
docker tag cirros:latest 192.168.146.20/myproject-kgc/cirros:v2
docker push 192.168.146.20/myproject-kgc/cirros:v2
docker-harbor私有仓库部署_第16张图片
docker-harbor私有仓库部署_第17张图片

你可能感兴趣的:(docker,容器,运维)