文章目录
docker 分布式仓库harbor
Harbor 是一个用于存储和分发Docker 镜像的企业级Registry 服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个Registry 节点的镜像资源复制,镜像全部保存在私有Registry 中, 确保数据和知识产权在公司内部网络中管控,另外,Harbor 也提供了高级的安全特 性 , 诸 如 用 户 管 理 , 访 问 控 制 和 活 动 审 计 等 , 官 网 地 址 : https://vmware.github.io/harbor/cn/ , 官 方 github 地 址 : https://github.com/vmware/harbor
1.Harbor 功能官方介绍
- 基于角色的访问控制:用户与 Docker 镜像仓库通过“项目”进行组织管理, 一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
- 镜像复制:镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡, 高可用,混合云和多云的场景。
- 图形化用户界面:用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
- AD/LDAP 支:Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
- 国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
- RESTful API - RESTful API :提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
- 部署简单:提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备。
2. 安装 Harbor
本次使用当前 harbor 稳定版 为 harbor-offline-installer-v1.7.6.tgz
下载地址:https://github.com/vmware/harbor/releases
安装文档: https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md
2.1 解决依赖环境
需要安装docker 和docker-compose
1.安装docker
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
apt install docker-ce=5:18.09.9~3-0~ubuntu-bionic docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic -y
2.安装docker-compasose
可以使用 apt 安装
root@Z4:~# apt-cache madison docker-compose
docker-compose | 1.17.1-2 | http://mirrors.aliyun.com/ubuntu bionic/universe amd64 Packages
docker-compose | 1.17.1-2 | http://mirrors.aliyun.com/ubuntu bionic/universe i386 Packages
docker-compose | 1.17.1-2 | http://mirrors.aliyun.com/ubuntu bionic/universe Sources
root@Z4:~#
root@Z4:~# apt install docker-compose
pip 安装
root@z3:~# apt install python-pip
root@z3:~# pip install --upgrade pip
root@z3:~# pip install docker-compose
2.2 并配置harbor启动
下载安装包
root@z3:/usr/local/src# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.6.tgz
root@z3:/usr/local/src# tar xvf harbor-offline-installer-v1.7.6.tgz
root@z3:/usr/local/src# ln -sv /usr/local/src/harbor /usr/local/harbor
'/usr/local/harbor' -> '/usr/local/src/harbor'
修改配置文件关键项
root@z3:/usr/local/harbor# vim harbor.cfg
#写ip地址或域名都行
hostname =192.168.1.103
harbor_admin_password =12345
安装
root@z3:/usr/local/harbor# ./prepare
root@z3:/usr/local/harbor# ./install.sh
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.1.103.
For more details, please visit https://github.com/goharbor/harbor .
验证: 访问 http://192.168.1.103 输入密码即可登录(默认账号是admin ,密码是配置文件自定义的那个)
2.3 .harbor后期 修改配置
后期修改配置 ,如果 harbor 运行一段时间之后需要更改配置,则步骤如下:
- 进入到harbor安装目录
root@z3:/usr/local/harbor# pwd
/usr/local/harbor
- 停止docker-compose 启动和harbor相关的容器
root@z3:/usr/local/harbor# docker-compose stop
- 编辑 harbor.cfg 进行相关配置
root@z3:/usr/local/harbor# vim harbor.cfg
- 更新配置,会自动清理之前的生成配置文件(密钥证书之类的)
root@z3:/usr/local/harbor# ./prepare
- 启动 harbor 服务
root@z3:/usr/local/harbor# docker-compose start
3. 用harbor 和上传镜像
3.1 构建harbor 项目
在项目中点击新建项目
填入项目名称后,项目一定得选择公开否则就连拉取镜像也要登录仓库,不方便
3.2 给旧镜像打标签
root@z2:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 c3c304cb4f22 5 weeks ago 64.2MB
root@z2:~# docker tag ubuntu:18.04 192.168.1.103/baseimages/ubuntu:1804
格式为 : 仓库域名或地址/项目名称/镜像名称:镜像版本
3.3 上传镜像
root@z2:~# docker push 192.168.1.103/baseimages/ubuntu:1804
The push refers to repository [192.168.1.103/baseimages/ubuntu]
Get https://192.168.1.103/v2/: dial tcp 192.168.1.103:443: connect: connection refused
直接上传是会被拒绝的, 因为上传需要权限和添加非安全仓库
设置非安全仓库并且重启
root@z2:~# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://n0kig9se.mirror.aliyuncs.com"],
"insecure-registries":["192.168.1.103"]
}
root@z2:~# systemctl restart docker
再试 ,发现还是不行
root@z2:~# docker push 192.168.1.103/baseimages/ubuntu:1804
The push refers to repository [192.168.1.103/baseimages/ubuntu]
28ba7458d04b: Preparing
838a37a24627: Preparing
a6ebef4a95c3: Preparing
b7f7d2967507: Preparing
denied: requested access to the resource is denied
登录仓库验证
root@z2:~# docker login 192.168.1.103
在试一下就行了
3.4 下载镜像
只需要添加非安全仓库,重启docker 就行
root@z1:~# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://n0kig8se.mirror.aliyuncs.com"],
"insecure-registries":["192.168.1.103"]
}
root@z1:~# docker pull 192.168.1.103/baseimages/ubuntu:1804
1804: Pulling from baseimages/ubuntu
23884877105a: Pull complete
bc38caa0f5b9: Pull complete
2910811b6c42: Pull complete
36505266dcc6: Pull complete
Digest: sha256:b58746c8a89938b8c9f5b77de3b8cf1fe78210c696ab03a1442e235eea65d84f
4. harbor 的复制管理
harbor 可以实现主从同步,提高服务的可用性。
首先准备2台服务器。192.168.1.103、192.168.1.104。
下面实现单向复制。192.168.1.104 为从 , 复制192.168.1.103/baseimages 下的项目内容
4.1 新建复制目标
在 系统管理/仓库管理 页面下点击仓库管理 新建目标

注意不要勾验证远程证书。

填完信息之后可以点击 测试连接书的方法,测试填的信息是否正确
4.2 在复制管理中新建规则

4.3 验证复制结果
在其他机器随便push一个镜像,在104的机器下也会有相同的镜像
注意:
-
harbor在主从同步时,从harbor会自动修改仓库地址 。例如会自动把 192.168.1.103/baseimages/alpine:v1改为192.168.1.104/baseimages/alpine:v1 。
-
若同步失败,可以查看日志找出原因
