docker 镜像仓库 Harbor 部署 以及 跨数据复制
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 部署 以及 跨数据复制的更多相关文章
- 企业级Docker镜像仓库Harbor部署与使用
yum install docker 官网地址:https://docs.docker.com/compose/install/ 运行此命令以下载Docker Compose的当前稳定版本 1 sud ...
- Docker镜像仓库Harbor部署
一.Harbor组件 组件 功能 harbor-adminserver 配置管理中心 harbor-db Mysql数据库 harbor-jobservice 负责镜像复制 harbor-log 记录 ...
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- Docker镜像仓库Harbor之Swagger REST API整合配置
转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...
- Docker镜像仓库Harbor之搭建及配置
目录 Harbor介绍环境.软件准备Harbor服务搭建Harbor跨数据复制配置FAQ1.Harbor 介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的 ...
- docker 系列 - 企业级私有镜像仓库Harbor部署(转载)
本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...
- Docker镜像仓库Harbor搭建及配置
一.harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribut ...
- Docker私有仓库Harbor部署与使用
一.harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 由下面几个组件组成: proxy:nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载 ...
- docker开源仓库Harbor部署笔记
Harbor介绍Harbor是Vmvare团队开发的开源企业级registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务.项目地址:ht ...
随机推荐
- hdu_3518_Boring counting(后缀数组)
题目链接:hdu_3518_Boring counting 题意: 给你一个字符串,让你找不重叠且出现大于1次以上的字串个数 题解: 后缀数组height数组的应用,我们枚举字串的长度,然后将heig ...
- how to write a struct to a file directly?
Using write and read system call. Following is an example: blk.h: #include <stdlib.h> #include ...
- 昨天上架出现问题,you binary is not optimized for iphone5.。。。。
这个时候只需要加一个lanuch image 就可以了
- app调用支付宝支付 笔记
1.提交各种申请 2.通过后进入支付宝开放平台 --> 管理中心 -->创建应用 --> 填写相关信息 提交等待审核通过(1,2天) 3.下载集成包(https://doc. ...
- 解决在IIS中调用Microsoft Office Excel组件后进程无法正常退出的问题
来源:http://www.cnblogs.com/ahui/archive/2013/03/05/2944441.html 有一个项目用到Excel组件产生报表,本以为这个通用功能是个很简单的cas ...
- android全屏和取消全屏 旋转屏幕
全屏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 取消全屏 getWindow().clearFlags(Win ...
- MySql 插入10位以上长度的字符报错or截断
当a字段为int类型时: 如果用MyBatis向MySql插入10个字符以上长度的字符串,则会报错. 如果直接在MySql中用sql语句插入10个字符以上长度的字符串,则会变成最大的int类型数值:2 ...
- git push origin master 报错 remote rejected] master -> master (branch is currently checked out)
解决办法: 977down vote You can simply convert your remote repository to bare repository (there is no wor ...
- windows ORA-12560: TNS: 协议适配器错误
1.first it report ORA-12560: TNS: 协议适配器错误 手工设定环境变量如下: set ORACLE_HOME=d:\app\OAadmin\product\11.2.0\ ...
- 关于tab选项卡,选项的css问题。
刚开始的思路是:让上面的选中的选项背景变成白色,让下面的层position:absolute;z-index:-1;top:1px,就能盖得上上面的横线.实践证明,这样是能盖得上,但是单选按钮不能点了 ...