`
m635674608
  • 浏览: 5060566 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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        43 minutes ago      804.6 MB
deploy_mysql        latest              5015ce56c9d5        49 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        2 days ago          328.8 MB
ubuntu              14.04               0ccb13bf1954        12 days ago         187.9 MB
golang              1.6.2               8ecba0e9bd48        5 weeks ago         753.5 MB
nginx               1.9                 c8c29d842c09        10 weeks ago        182.7 MB
registry            2.4.0               8b162eee2794        3 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"   4 minutes ago       Up 4 minutes                                                   deploy_jobservice_1
0f8ff9b099d2        library/nginx:1.9        "nginx -g 'daemon off"   4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   deploy_proxy_1
6b0159939874        deploy_ui                "/go/bin/harbor_ui"      4 minutes ago       Up 4 minutes        80/tcp                                     deploy_ui_1
6f2298da0f67        deploy_mysql             "docker-entrypoint.sh"   4 minutes ago       Up 4 minutes        3306/tcp                                   deploy_mysql_1
2dbca506e1ea        library/registry:2.4.0   "/bin/registry serve "   4 minutes ago       Up 4 minutes        5000/tcp, 0.0.0.0:5001->5001/tcp           deploy_registry_1
fc5b1a201c72        deploy_log               "/bin/sh -c 'cron && "   4 minutes ago       Up 4 minutes        0.0.0.0:1514->514/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        3 weeks ago         958.4 MB
sath89/oracle-12c   latest              7effebcd18ee        11 weeks ago        5.692 GB
centos              latest              778a53015523        4 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        3 weeks ago         958.4 MB
mongodb                    latest              8af05a33e512        3 weeks ago         958.4 MB
sath89/oracle-12c          latest              7effebcd18ee        11 weeks ago        5.692 GB
centos                     latest              778a53015523        4 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: 2824
复制代码

 

 

登陆 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

 

http://www.cnblogs.com/jicki/p/5737369.html

分享到:
评论

相关推荐

    Gitllab+Jenkins+Docker+Harbor 自动化部署流程

    在自动化部署流程中,Harbor 负责存储和管理 Docker 镜像,并提供了一个安全的环境来部署应用程序。 五、 自动化部署流程 自动化部署流程的主要步骤包括: 1. 代码提交:开发者将代码提交到 Gitllab 服务器上。 2...

    将docker-harbor镜像部署到k8s集群-node部署时需harbor认证

    在Deployment部分,我们定义了一个名为`webs`的Deployment,该Deployment包括两个副本(replicas),每个副本都运行一个tomcat容器,该容器从docker-harbor镜像仓库中拉取镜像。 在Service部分,我们定义了一个名为...

    arm64下镜像仓库harbor安装部署文件

    centos arm64下,镜像仓库harbor安装部署文件,压缩包内附安装说明文档,根据说明文档进行部署即可。

    部署docker仓库harbor

    部署docker仓库harbor的镜像

    Harbor私有镜像仓库部署包

    解压得到部署harbor私有镜像仓库所需的docker-ce、docker-compose、harbor包。 1.环境准备 可使用已下载好的包,也可自行下载。 2.安装docker 部署docker,安装后需进行重启,使docker接管iptables规则 3.配置镜像...

    搭建Harbor镜像仓库:从安装到上传镜像

    搭建Harbor镜像仓库:从安装到上传镜像 Harbor是一个开源的容器镜像仓库系统,由VMware开发。它提供了一个安全、可靠、可扩展的镜像仓库解决方案,支持 Docker 镜像的存储和管理。本文将指导您从安装 Harbor 到上传...

    harbor-1.5.1

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文...

    jenkins2.328配置连接harbor2.4的认证-jenkinsfile连接harbor-详细文档

    Docker 镜像仓库是存储 Docker 镜像的仓库,可以是公开的或私有的。Harbor 是一种私有的容器registry,可以存储和管理 Docker 镜像。 7. Jenkins 与 Harbor 的集成 Jenkins 可以与 Harbor 集成,实现自动化的镜像...

    Harbor 2.0版本API删除镜像【亲测,有效!】

    通过Harbor api获取项目名、仓库名、镜像名和镜像tag,交互删除需要删除的镜像

    Docker搭建私有仓库之Harbor的步骤

    Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装, 它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm...

    k8s集群部署Harbor镜像仓库

    这减少了对公共Docker Hub等外部仓库的依赖,提高了镜像的安全性和可控性。 安全性管理: Harbor支持对镜像进行RBAC(Role-Based Access Control)和LDAP等认证授权机制。这使得你能够更好地管理镜像的访问权限,...

    Docker培训视频.rar

    │ 01.Docker介绍与体系结构.mp4 │ 02.Docker内部组件、虚拟机与容器区别.mp4 │ 03.Docker应用场景.mp4...企业级镜像仓库-Harbor部署.mp4 │ 18.企业级镜像仓库-自签HTTPS证书.mp4 └ 19.企业级镜像仓库-Docker主机从

    局域网部署Docker-从无到有创建自己的Docker私有仓库.docx

    局域网部署 Docker-从无到有创建自己的 Docker 私有仓库 在国内使用 Docker 时,经常会遇到镜像拉取失败的问题,这是因为 GFW 的原因。因此,创建自己的 Docker 私有仓库成为了一种必要的手段。本文将指导用户从头...

    Docker搭建Harbor公开仓库的方法示例

    Registry:是一个私有镜像仓库,图形化支持较差,小型企业使用; Harbor:支持可视化管理,支持私有仓库和公有仓库,支持镜像的管理控制; Docker Harbor的优点 VMWare公司的开源镜像管理解决方案; 支持图形化...

    jenkins+k8s+docker+harbor的ci、cd操作

    Harbor 是一个基于 Docker 的 registry 服务器,可以用于存储和管理 Docker 镜像。Harbor 提供了一个高度可扩展的架构,可以满足大规模 Docker 镜像的存储和管理需求。 CI/CD 操作流程 下面是 CI/CD 操作的流程: ...

    docker实战详细步骤教程

    docker超详细基础教程,按步骤学习快速掌握docker的用法 Docker实战 docker概述 ...Harbor私有仓库 Harbor搭建 Harbor实战 Docker容器监控 Docker监控原理 K8S集群 前置工作 安装k8s组件 部署Master节点

    Docker圣经:大白话说Docker底层原理,6W字实现Docker自由.docx

    Harbor 是一个私有镜像仓库,可以帮助用户更好地管理 Docker 镜像。 Harbor 的安装非常简单,只需要下载压缩包、上传到虚拟机、解压、创建证书、配置 Harbor 和运行 prepare 脚本。 Docker 的 daemon 是 Docker ...

    Jenkins+gitlab+mavan+harbor

    在这个流程中,我们将使用 Jenkins 来自动化 GitLab 仓库的构建、Maven 的编译、Docker 的镜像构建和 Harbor 的镜像仓库管理。 GitLab 是一个开源的版本控制系统,提供了一个平台来管理和存储代码仓库。在这个流程...

    Rancher下Docker拉取镜像出现unauthorized to access repository问题.docx

    Rancher下Docker拉取镜像出现unauthorized to access repository问题解决方案 Rancher是一个流行的容器编排工具,它可以帮助用户快速部署和管理容器化应用程序。然而,在使用Rancher时,可能会遇到拉取镜像出现...

    Docker私有仓库Registry部署的实现

    随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要...

Global site tag (gtag.js) - Google Analytics