docker 镜像仓库 Harbor 部署 跨数据复制

Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目

它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文。

Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。

注: 由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0

开源项目地址:https://github.com/vmware/harbor

一、 使用docker compose 快速部署:

首先用 git 下载 源码。

git clone https://github.com/vmware/harbor

下载完以后 进入 harbor/Deploy 目录

初始化配置, 配置文件为harbor.cfg

## Configuration file of Harbor
# hostname 设置访问地址,支持IP,域名,主机名,禁止设置127.0.0.1
hostname = reg.mydomain.com # 访问协议,可设置 http,https
ui_url_protocol = http # 邮件通知, 配置邮件通知。
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false # harbor WEB UI登陆使用的密码
harbor_admin_password = Harbor12345 # 认证方式,这里支持多种认证方式,默认是 db_auth ,既mysql数据库存储认证。
# 这里还支持 ldap 以及 本地文件存储方式。
auth_mode = db_auth # ldap 服务器访问地址。
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com # mysql root 账户的 密码
db_password = root123
self_registration = on
use_compressed_js = on
max_job_workers = 3
verify_remote_cert = on
customize_crt = on # 一些显示的设置.
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = organization
crt_organizationalunit = organizational unit
crt_commonname = example.com
crt_email = example@example.com

修改为配置文件以后 运行./prepare脚本更新配置, 出现如下信息表示 更新完毕.

Generated configuration file: ./config/ui/env
Generated configuration file: ./config/ui/app.conf
Generated configuration file: ./config/registry/config.yml
Generated configuration file: ./config/db/env
Generated configuration file: ./config/jobservice/env
Clearing the configuration file: ./config/ui/private_key.pem
Clearing the configuration file: ./config/registry/root.crt
Generated configuration file: ./config/ui/private_key.pem
Generated configuration file: ./config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.

执行完毕会生成一个 docker-compose.yml  文件

配置 docker-compose.yml 文件中的 挂载目录,启动方式等选项。

使用 pip install docker-compose 安装 docker-compose

执行 docker-compose up -d 构建docker 容器

docker hub 下载镜像实在是慢, Harbor 提供了一个 配置本地镜像的配置: cd harbor/contrib/prebuild-install

运行 update_compose.sh 配置本地的镜像仓库

我们也可以配置 --registry-mirror= 来加速下载 使用 daocloud 提供的 mirror http://b438f72b.m.daocloud.io

[root@localhost Deploy]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
deploy_jobservice latest be822b50163d minutes ago 804.6 MB
deploy_mysql latest 5015ce56c9d5 minutes ago 328.8 MB
deploy_ui latest 8596c12dbeba About an hour ago 808.1 MB
deploy_log latest 6a74c6f52a2b About an hour ago 187.9 MB
mysql 5.6 5e0f1b09e25e days ago 328.8 MB
ubuntu 14.04 0ccb13bf1954 days ago 187.9 MB
golang 1.6. 8ecba0e9bd48 weeks ago 753.5 MB
nginx 1.9 c8c29d842c09 weeks ago 182.7 MB
registry 2.4. 8b162eee2794 months ago 171.1 MB
[root@localhost Deploy]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9704f42b05d5 deploy_jobservice "/go/bin/harbor_jobse" minutes ago Up minutes deploy_jobservice_1
0f8ff9b099d2 library/nginx:1.9 "nginx -g 'daemon off" minutes ago Up minutes 0.0.0.0:->/tcp, 0.0.0.0:->/tcp deploy_proxy_1
6b0159939874 deploy_ui "/go/bin/harbor_ui" minutes ago Up minutes /tcp deploy_ui_1
6f2298da0f67 deploy_mysql "docker-entrypoint.sh" minutes ago Up minutes /tcp deploy_mysql_1
2dbca506e1ea library/registry:2.4. "/bin/registry serve " minutes ago Up minutes /tcp, 0.0.0.0:->/tcp deploy_registry_1
fc5b1a201c72 deploy_log "/bin/sh -c 'cron && " minutes ago Up minutes 0.0.0.0:->/tcp deploy_log_1

完成以后,使用 http://userIP/ 访问 Harbor

使用 帐号 admin, 密码为 配置文件中 harbor_admin_password = Harbor12345 的密码 登陆

至此, Harbor 已经搭建完成,具体在 WEB UI 下面操作也是非常的简单,只有几个选项。

docker 需要上传 push 镜像,需要在 docker 中配置 --insecure-registry userIP 或者在nginx 中配置 https

配置完毕以后,重启 docker

使用 docker login userIP 登陆 Harbor

[root@swarm-manager ~]#docker login 10.6.0.192
Username (admin): admin
Password:
Login Succeeded

查看 本地 images

[root@swarm-manager ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongodb latest 8af05a33e512 weeks ago 958.4 MB
sath89/oracle-12c latest 7effebcd18ee weeks ago 5.692 GB
centos latest 778a53015523 months ago 196.7 MB

tag 修改 image 的名字. 格式为: userip/项目名/image名字:版本号

[root@swarm-manager ~]#docker tag mongodb 10.6.0.192/jicki/mongodb:1.0

[root@swarm-manager ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
10.6.0.192/jicki/mongodb 1.0 8af05a33e512 weeks ago 958.4 MB
mongodb latest 8af05a33e512 weeks ago 958.4 MB
sath89/oracle-12c latest 7effebcd18ee weeks ago 5.692 GB
centos latest 778a53015523 months ago 196.7 MB

push 镜像到 Harbor

[root@swarm-manager ~]#docker push 10.6.0.192/jicki/mongodb:1.0
The push refers to a repository [10.6.0.192/jicki/mongodb]
c1e4cd91bcd4: Pushed
d9a948970255: Pushed
dd9b001e77ee: Pushed
625440e212f2: Pushed
75fa23acbccb: Pushed
fd269370dcf4: Pushed
44e3199c59b3: Pushed
db3474cfcfbc: Pushed
5f70bf18a086: Pushed
6a6c96337be1: Pushed
1.0: digest: sha256:c7d2e619d86089ffef373819a99df1390c4f2df4aeec9c1f7945c55d63edc670 size:

登陆 WEB UI , 选择项目, 项目名称 jicki , 进入 既可查看刚才上传的 image

至此, Harbor 都已经部署完成。

二、 配置Docker 镜像复制。

配置 2个 Harbor

IP 1 = 10.6.0.192

IP 2 = 10.6.0.196

在 10.6.0.192 上面我们已经push 了一个 镜像,所以我们将这台当作 主节点,10.6.0.196 为从复制节点。

进入 WEB UI 选择 项目, 选择项目为 jicki , 然后选择 复制 选项。

点击 新增策略

创建完毕以后,我们可以看 复制策略 已经有一栏。

复制任务里面 也已经有一个任务。

稍等一会,可以看到 复制任务里面 那个任务已经提示 完成。

登陆 10.6.0.196 的 WEB UI

我们可以看到, 镜像已经复制过来。而且连 日志操作 也会复制过来。

harbor 升级

一、

cd harbor/Deploy/

执行 docker-compose down

删除原有的容器

二、

备份整个目录

mv harbor/ /tm/harbor

三、

重新 下载新的源码

git clone https://github.com/vmware/harbor

四、
如果harbor 是迁移到其他服务器,请先执行数据备份

cd harbor/migration/

修改 migration.cfg 文件里面的 数据库 帐号密码

docker build -t migrate-tool .

五、
运行一个临时数据库容器,注意:/data/database 为你设置的挂载数据库的目录 /path/to/backup 数据备份的目录

数据库备份:
docker run -ti --rm -v /data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backup migrate-tool backup

六、
数据库还原:
docker run -ti --rm -v /data/database:/var/lib/mysql migrate-tool up head

七、
对比一下配置文件:

cd harbor/Deploy/

diff harbor.cfg /tmp/harbor/Deploy/harbor.cfg

diff docker-compose.yaml /tmp/harbor/Deploy/docker-compose.yaml

如果修改了端口 必须更新 cd harbor/Deploy/config/nginx/nginx.conf 里面的端口

八、
执行 ./prepare 生成新的配置文件

cd /harbor/Deploy/

./prepare

九、
最后build 新的镜像,启动容器

cd /harbor/Deploy/

docker-compose up --build -d

十、
登陆 WEB UI 检查是否OK

docker 镜像仓库 Harbor 部署 以及 跨数据复制的更多相关文章

  1. 企业级Docker镜像仓库Harbor部署与使用

    yum install docker 官网地址:https://docs.docker.com/compose/install/ 运行此命令以下载Docker Compose的当前稳定版本 1 sud ...

  2. Docker镜像仓库Harbor部署

    一.Harbor组件 组件 功能 harbor-adminserver 配置管理中心 harbor-db Mysql数据库 harbor-jobservice 负责镜像复制 harbor-log 记录 ...

  3. 离线手动部署docker镜像仓库——harbor仓库(HTTPS)

    实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...

  4. Docker镜像仓库Harbor之Swagger REST API整合配置

    转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...

  5. Docker镜像仓库Harbor之搭建及配置

    目录 Harbor介绍环境.软件准备Harbor服务搭建Harbor跨数据复制配置FAQ1.Harbor 介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的 ...

  6. docker 系列 - 企业级私有镜像仓库Harbor部署(转载)

     本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f  , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...

  7. Docker镜像仓库Harbor搭建及配置

    一.harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribut ...

  8. Docker私有仓库Harbor部署与使用

    一.harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 由下面几个组件组成: proxy:nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载 ...

  9. docker开源仓库Harbor部署笔记

    Harbor介绍Harbor是Vmvare团队开发的开源企业级registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务.项目地址:ht ...

随机推荐

  1. angular、bootstrap初稿搭建

    1.bootstrap3.0中,ie8不兼容响应式设计 @media,需要添加如下2个查件 <!-- html5.js for IE less than 9 -->     <!-- ...

  2. Ubuntu 14.04 Nvidia显卡驱动手动安装及设置

      更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用 ...

  3. Linux系统的时区和时间调整

     linux调整系统时区: 1)tzselect命令 找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai,用这个文件替换当前的/etc/localtime文件. 或者 ...

  4. Git中的merge命令实现中出现问题及其解决

    Git中的merge命令实现和工作方式 2015年8月17日星期一 丹丹 git代码在合并两个分支的时候总是会出现一下的错误提示,不能正常的完成合并分支,错误提示如图所示: 但是在其他的终端是可以完成 ...

  5. Android ListView 中的checkbox

    Q:ListView + CheckBox 当上下滚动的时候有事会自动选中或取消 A:这个与ListView的缓存机制有关.当你屏幕滚动后,ListView中的item选项视图先检查缓存中是否有视图, ...

  6. onPostCreate——Activity彻底运行起来之后的回调

    记得之前想要在Activity布局完成,彻底跑起来之后,再获取当前Activity的窗口中,某个View的宽高,之前用的办法很土,弄个Handler,发个Message出来,使用sendMessage ...

  7. opatch auto in windows db in 11.2.0.4

    --prapare:copy 192.168.63.83 D:\oracle_patch\1612 to 192.168.2.169 D:\oracle_patch\1612cd D:\oracle_ ...

  8. 多线程junit单元测试

    junit中测试完成后会进行jvm退出,而不是线程退出,所以任一线程退出都会导致测试结束,junit想进行多线程测试需要进行另外包装,网上看到一个投机取巧的例子还不错,贴上我的测试代码(代码中我需要测 ...

  9. CSS中如何把Span标签设置为固定宽度

    一.形如<span>ABC</span>独立行设置SPAN为固定宽度方法如下: span {width:60px; text-align:center; display:blo ...

  10. iOS 判断数组不为空

    if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)