一、docker-harbor 私有仓库部署和管理:
docker-harbor 私有仓库部署和管理:
harbor:开源的企业级的docker仓库软件。
仓库:私有仓库、公有仓库。私有仓库。
docker-harbor:是有图形化的,页面UI展示的一个工具。操作起来很直观。
harbor:每个组件都是由容器构建的,所以安装harbor必须有docker。
docker-compose一键编排,所以也是需要安装的。
1.1、harbor:
1、通过角色对权限进行控制,用户和仓库都是基于项目进行组织。
不同的用户在不同的项目中拥有不同的权限
2、镜像复制,每个仓库(之间可以通信)之间可以互相复制里面的
镜像
A <--------- B
NGINX NGINX
HTTP
MYSQL
3、UI界面可以对镜像进行删除,删除之后也会释放本机的空间。
4、图形化界面,可以用浏览器进行访问。
5、审计管理,所有对镜像仓库的操作都是记录,用于审计管理
1.2、harbor的组件:
主要的组件:
1、proxy:nginx的前端页面,nginx的配置中做个反向代理。浏览器的不同的请求转发到后端不同的容器中。
2、Registry:仓库,保存镜像,同时push/pull
3、core service:Harbor的核心功能,对用户进行授权,监测仓库内镜像的变化以及token,根据不同的权限给与不同的token,
token相等于缓存用户登录的信息,一次认证,下次不需要验证。
4、database:负责存储用户的权限,审计日志,docker镜像的分组信息
5、JOB services:镜像复制。
6、log collector:日志收集工具。
以上组件都是由容器运行,docker-compose 一键拉取部署。
二、实验
客户端:192.168.168.71 docker harbor
服务端:192.168.168.72 docker harbor docker-compose
服务端2:192.168.168.72 docker harbor docker-compose
1、部署服务端
2、客户端和服务端之间上传,下载镜像,权限控制
3、仓库之间的镜像复制
2.1、docker-harbor安装
[root@docker1 opt]# docker-compose -v ##查看docker-compose版本
Docker Compose version v2.18.0
[root@docker1 opt]# rz -E
rz waiting to receive.
[root@docker1 opt]# ls
docker-compose.yml harbor-offline-installer-v2.8.1.tgz html mysql mysql1 nginx nhtml php
[root@docker1 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz
[root@docker1 opt]# ls
docker-compose.yml harbor-offline-installer-v2.8.1.tgz mysql nginx php
harbor html mysql1 nhtml
[root@docker1 opt]# cd harbor/
[root@docker1 harbor]# ls
common.sh harbor.v2.8.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
[root@docker1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker1 harbor]# vim harbor.yml ##修改harbor配置文件
5 hostname: 192.168.168.71 ##harbor仓库的地址
13 #https: ##注释https
14 # https port for harbor, default is 443
15 # port: 443 ##注释https端口
34 harbor_admin_password: 123456
[root@docker1 harbor]# ./prepare ##配置harbor所需要的配置文件和环境
[root@docker1 harbor]# pwd
/opt/harbor
[root@docker1 harbor]# ./install.sh ##启动安装脚本
2.2、本机上传镜像
网页新建项目:
[root@docker1 harbor]# docker tag nginx:1.22 192.168.168.71/test1/nginx:v1 ##给本地镜像打标签,不打标签,上传不了harbor仓库
[root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.168.71 -- containerd=/run/containerd/containerd.sock ##客户端指定到服务端,从服务端获取镜像
[root@docker1 harbor]# systemctl daemon-reload ##改完配置文件进行重启
[root@docker1 harbor]# systemctl restart docker
[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.168.71
对应解决:
[root@docker1 harbor]# ./install.sh ##改完配置文件,重启docker后,进行初始化安装
[root@docker1 harbor]# docker login -u admin -p 123456 http://192.168.168.71 ##登录仓库,进行上传和下载
[root@docker1 harbor]# docker push 192.168.168.71/test1/nginx:v1 ##上传镜像nginx:v1
[root@docker1 harbor]# docker tag nginx:1.18 192.168.168.71/test1/nginx:v2 ##给镜像打标签
[root@docker1 harbor]# docker push 192.168.168.71/test1/nginx:v2 ##上传镜像nginx:v2
2.3、本机从仓库下载镜像两种方法
[root@docker1 harbor]# docker pull 192.168.168.71/test1/nginx:v2
2.4、远程下载仓库镜像
[root@docker2 ~]# docker -v
Docker version 24.0.1, build 6802122
[root@docker2 ~]# docker-compose -v
Docker Compose version v2.18.0
[root@docker2 ~]# cd /opt/
[root@docker2 opt]# ls
containerd es2 kibana test
es1 jenkins-2.396-1.1.noarch.rpm logstash test.yaml
[root@docker2 opt]# rz -E
rz waiting to receive.
[root@docker2 opt]# ls
containerd harbor-offline-installer-v2.8.1.tgz logstash
es1 jenkins-2.396-1.1.noarch.rpm test
es2 kibana test.yaml
[root@docker2 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz
[root@docker2 opt]# ls
containerd es2 harbor-offline-installer-v2.8.1.tgz kibana test
es1 harbor jenkins-2.396-1.1.noarch.rpm logstash test.yaml
[root@docker2 opt]# cd harbor/
[root@docker2 harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker2 harbor]# vim harbor.yml
5 hostname: 192.168.168.72
13 #https:
14 # https port for harbor, default is 443
15 # port: 443
34 harbor_admin_password: 123456
[root@docker2 harbor]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.168.71 --containerd=/run/containerd/containerd.sock ##指向服务端
[root@docker2 harbor]# systemctl daemon-reload
[root@docker2 harbor]# systemctl restart docker
[root@docker2 harbor]# docker login -u admin -p 123456 http://192.168.168.71 ##登录服务端的仓库
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@docker2 harbor]# docker images
[root@docker2 harbor]# docker pull 192.168.168.71/test1/nginx:v2 ##下载第一种
第二种一键拉取命令到命令行执行
[root@docker2 harbor]# docker tag centos:7 192.168.168.71/test1/centos:v1 ##给需要上传的进行打标签
[root@docker2 harbor]# docker images
[root@docker2 harbor]# docker push 192.168.168.71/test1/centos:v1 ##上传镜像到服务器的仓库中
再试一下退出仓库:
从服务器拉取镜像到本地
[root@docker1 harbor]# docker pull 192.168.168.71/test1/centos:v1
[root@docker1 harbor]# docker images
--------------------------远程下载镜像-----------------
2.5:创建用户
指定角色
2.6、角色:
1、添加用户,用户就是普通用户,私有用户是无法浏览的。
2、要浏览私有项目,必须要项目中添加成员,设定成员的角色。
2.7、角色的类型
-
受限访客:只能看,不能上传,也不能下载,也没有其他权限。
-
访客:拥有只读权限,可以拉取镜像,不能上传,也无法删除镜像。
-
开发者:可以读写,但是没有删除权限。
-
维护人员:既有读写,也可以对项目的权限进行修改
-
项目管理员:读写,修改,删除。
##指定自定义用户登录仓库
docker login -u 用户名 -p 用户密码 http://192.168.168.71
[root@docker1 harbor]# docker login -u liyang -p Liyang123 http://192.168.168.71
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
docker logout ##退出登录
2.8、基于docker,安装docker-compose,安装docker-harbor
----------------------------安装docker-compose-----------------------------
[root@docker3 opt]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@docker3 opt]# chmod 777 /usr/local/bin/docker-compose
[root@docker3 opt]# docker-compose --version
Docker Compose version v2.18.0
----------------------安装docker-harbor------------------------
[root@docker3 opt]# tar -xf harbor-offline-installer-v2.8.1.tgz
[root@docker3 opt]# ls
docker-compose.yml harbor-offline-installer-v2.8.1.tgz mysql nginx php
harbor html mysql1 nhtml
[root@docker3 opt]# cd harbor/
[root@docker3 harbor]# ls
common.sh harbor.v2.8.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
[root@docker3 harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker3 harbor]# vim harbor.yml
5 hostname: 192.168.168.73
13 #https:
14 # https port for harbor, default is 443
15 # port: 443
34 harbor_admin_password: 123456
[root@docker3 harbor]# ./prepare
[root@docker3 harbor]# pwd
/opt/harbor
[root@docker3 harbor]# ./install.sh
2.9、实现192.168.168.71/harbor仓库备份到192.168.168.73/harbor仓库
vim /etc/docker/daemon.json ##修改docker源