Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。
它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

1.环境

harbor采用docker-compose部署,需要一开始部署好docker-compose。

1.1 配置DNS

DNS配置harbor.s.com指向harbor服务器。
参考:CentOS搭建DNS服务器 - SPEX

1.2 安装docker-compose

参考:部署Docker与Docker-compose - SPEX

2.下载

采用离线部署,压缩包570Mi左右。

cd /tmp
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.2-rc1.tgz
tar xvf harbor-offline-installer-v1.8.2-rc1.tgz
cd harbor/

vi harbor.yml

# 域名
hostname: harbor.s.com 
# 端口
http:
  port: 80


# 登陆密码,用户名为admin
harbor_admin_password: Password
# 数据库密码
database:
  password: root123
# 数据库路径
data_volume: /data


# 以下均为默认
clair: 
  updaters_interval: 12

  http_proxy:
  https_proxy:
  no_proxy: 127.0.0.1,localhost,core,registry

jobservice:
  max_job_workers: 10

chart:
  absolute_url: disabled

log:
  level: info
  rotate_count: 50
  rotate_size: 200M
  location: /var/log/harbor

_version: 1.8.0

3.部署

# 运行安装脚本
sh /tmp/harbor/install.sh

# 直到显示以下信息
···

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://harbor.s.com. 
For more details, please visit https://github.com/goharbor/harbor .

# 防火墙放行
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

4.开机自启动

在harbor启动脚本启动后,会生成一个文件夹与一个文件,分别为common与docker-compose.yml。
其中common存放一些docke让镜像的配置文件,而docker-compose.yml则为编排启动文件,我们利用此文件进行开机自启动。

# mkdir
mkdir -p /ops/enable

# mv 
mv /tmp/harbor/common /ops/enable/
mv /tmp/harbor/docker-compose.yml /ops/enable/harbor.yaml

# 二选一:1. 脚本方式启动,不推荐
echo "/usr/local/bin/docker-compose -f /ops/enable/harbor.yaml up -d" >>/etc/rc.d/rc.local

# 二选一:2. 推荐注册为systemd服务
vi /usr/lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f /ops/enable/harbor.yaml up
ExecStop=/usr/local/bin/docker-compose -f /ops/enable/harbor.yaml down

[Install]
WantedBy=multi-user.target

# reload daemon
systemctl daemon-reload

# 开机自启动
systemctl enable harbor

5.使用

5.1 配置连接daemon

docker默认连接仓库采用的是https方式,而因为我们部署在内网,并未开启https,对于http的harbor,需要编辑docker daemon文件,允许不安全的连接。
如果文件不存在则新建:

  • registry-mirrors docker daocloud的镜像加速
  • insecure-registries 允许http连接至harbor.s.com
cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
  "insecure-registries": ["http://harbor.s.com"]
}

5.2 如何使用

以一个docker pull命令来看:

docker pull harbor.s.com/elasticsearch/elasticsearch:7.3.0
  • docker pull: docker拉取命令
  • harbor.s.com: 镜像服务器域名
  • /elasticsearch: 项目名称
  • /elasticsearch:7.3.0: 镜像名与版本

所以如果需要上传使用镜像,操作步骤如下:

  • 1.harbor:建立用户
  • 2.harbor:建立项目,并授权用户,为了方便拉取,可设置项目为公开项目
  • 3.本地docker:docker login harbor.s.com ,输入账号密码
  • 4.本地docker:docker tag image-sample harbor.s.com/project/image-sample:0.0.1
  • 5.本地docker:docker push harbor.s.com/project/image-sample:0.0.1
  • 6.其他docker:docker daemon insecure-registries配置harbor.s.com
  • 7.其他docker:docker pull harbor.s.com/project/image-sample:0.0.1
Last modification:August 19th, 2019 at 12:41 pm