docker-harbor 私有仓库部署和管理:
harboy:开源的企业级的docker仓库软件。
仓库:私有仓库 公有仓库。
harbor是有图形化的,页面ui展示的一个工具。操作起来很直观。
harbor每个组件都是由容器构建的,所以安装harbor必须要有docker。
docker-compose一键编排,所以也是需要安装的。
harbor:
1、通过角色对权限进行控制,用户和仓库都是基于项目进行组织。不同的用户在不同的项目中拥有不同的权限
2、镜像复制,每个仓库(之间可以通信)之间可以互相复制里面的镜像
A <----- B
NGINX NGINX
HTTP
MYSQL
3、UI界面可以对镜像进行删除,删除了之后也会释放本机的空间
4、图形化界面,可以用浏览器进行访问
5、审计管理,所有对镜像仓库的操作都有记录,用于审计管理
harbor的组件:
1、porxy:nginx的前段页面,nginx的配置中做个反向代理。浏览器不同的请求转发到后端的不同的容器中。
2、Registry:仓库,保存镜像,同时push/pull
3、core services:Harbor的核心功能,对用户进行授权,检测仓库内镜像的变化以及token,根据不同的权限给于不同的token。
4、database:负责存储用户的权限,审计日志,docker镜像的分组信息
5、JOB services 镜像复制
6、log collector 日志收集
以上组件都是由容器运行,docker-compose一键拉取部署。
Harbor 部署
实验部署:
客户端: 192.168.233.33 DOCKER
服务端: 192.168.233.32 HARBOR DOCKER-COMPOSE
服务端2:192.168.233.33 HARBOR DOCKER-COMPOSE
(1)部署 Docker-Compose 服务
(2) 部署 Harbor 服务
修改harbor安装的配置文件
vim /opt/harbor/harbor.yml
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.233.31
--59行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = 12345
把默认密码改为1234566
(3) 启动 Harbor
cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行
./prepare #为 harbor 启动的容器生成一些必要的文件(环境)
./install.sh # 以 pull 镜像并启动容器
(4)查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps
##以下命令均在在habor的配置目录下运行
docker-compose up -d #启动
docker-compose stop #停止
docker-compose restart #重新启动
(5)创建一个新项目
1)浏览器访问:http://192.168.233.31登录 Harbor WEB UI 界面
2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮
3)填写项目名称为“myproject-test”,点击“确定”按钮,创建新项目
4)此时可使用 Docker 命令在本地通过 192.168.233.31 来登录和推送镜像。
docker login -u admin -p 123456 http://192.168.233.31
登录Harbor
将镜像打标签
上传镜像到 Harbor
docker push 192.168.233.31/myproject-test/nginx:v10
下载镜像
docker pull 192.168.233.31/myproject-test/nginx:v10
(5)在 Harbor 界面 myproject-test 目录下可看见此镜像及相关信息
(6) 在其他客户端上传镜像
以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。
1)在 Docker 客户端配置操作
解决办法是:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
vim /usr/lib/systemd/system/docker.service
--13行--修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.233.31 --containerd=/run/containerd/containerd.sock
//重启 Docker,再次登录
systemctl daemon-reload
systemctl restart docker
//再次登录 Harbor
docker login -u admin -p 123456 http://192.168.233.31
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Login Succeeded
//将自动保存凭据到/root/.docker/config.json,下次登录时可直接使用凭据登录 Harbor
创建用户:
角色:
1、先添加用户,用户是一个普通用户,私有项目是无法浏览的
2、要浏览私有项目,必须要项目中添加成员,设定成员的角色
受限访客:只能看,不能上传,也不能下载,也没有其它权限
开发者:可以读写,但是不能删除
维护人员:有读写权限,也可以对项目的权限进行修改
管理员:读写,修改,删除的权限
再次安装一台Harbor
再次开启一台主机,按照前面的步骤安装一台Harbor服务器
复制的过程 :
(1)添加复制对象
服务端(要复制的主机):登录Harbor管理员
复制管理=》目标=》+目标=》目标填写
输入对方主机的用户名和密码,URL 等待,进行测试连接,如果没问题就可以确定
(2)进行项目的选择复制
服务端中:
项目=》点击要复制的项目名=》复制 =》 +复制规则
编写好复制规则,进行测试连接,如果无误,就可以确认