Docker-harbor私有仓库

docker-compose

docker-harbor私有仓库

docker 镜像  容器   仓库

仓库:保存镜像

私有,自定义用户的形式登陆仓库,拉取或者上传镜像。(内部管理的用户)

harbor:是VMware公司开发的,开源的企业级的 docker registry项目。

帮助用户快速的搭建一个企业级别的docker仓库的服务。

支持中文。

harbor的特性:

1、基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限

2、基于镜像,可以在不同的harbor实例之间进行复制。

3、harbor自带一个数据库,AD/LDAP(类似于数据库当中的表),对已经存在的用户进行认证和管理。

4、镜像的删除和垃圾回收,仓库当中的镜像可以被删除(基于权限控制的),也可以回收镜像占用的空间

5、有图形化界面,用户可以直接通过浏览器来对镜像仓库进行管理。

6、审计管理,所有对镜像仓库的操作,都可以被记录溯源。

7、支持API操作,

API的程序接口,端口:主机和主机之间的通信        API的应用和应用之间的接口。管理员可以基于API调用接口,和更多的其他的程序进行集成。

harbor的组件:

1、proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,80端口,nginx前端代理,在harbor当中

registry,UI,TOKEN,都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。

2、registry:负责存储镜像,docker pull/push的命令都由其负责处理。用户进行访问控制,不同的用户对docker的镜像有不同的读写权限。

Registry每次都会指向一个不同的Token,强制用户每次的pull/push,都必须带一个合法的token(公钥对),Registry会通过公钥对,进行解密验证,合法身份才能进行指定操作。

3、CORE SERVICES:Harbor的核心功能:提供3个服务

    1、UI:提供图形化界面。

    2、Webhook:仓库上所有镜像的变化(增删改),都会传输给webhook,以显示在UI界面上

    3、Token:签发每一次push和pull的公钥对,用来和仓库之间进行权限认证。

4、database:harbor-db,为核心core services提供数据库存储服务,用户权限,审计日志  docker镜像的分组和项目信息。

5、job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上

6、log collector(harbor-log)统一日志收集工具。

harbor都是基于docker容器化部署的,由docker-compose一键编排,安装。

docker1:安装仓库        192.168.233.40        docker-ce  har-bor   docker-compose

docker2:客户端            192.168.233.50        docker-ce  har-bor   docker-compose

docker3:安装仓库---实现远程同步  192.168.233.60        docker-ce  har-bor  docker-compose

准备环境

Docker-harbor私有仓库_第1张图片

修改主配置文件

vim harbor.yml

Docker-harbor私有仓库_第2张图片

修改IP

Docker-harbor私有仓库_第3张图片

harbor_admin_passworf:123456

设置管理员的密码

database的password:数据库的密码默认root123

Docker-harbor私有仓库_第4张图片

data_volume:harbor默认保存镜像的路径(默认就是/data)

Docker-harbor私有仓库_第5张图片

jobservice:(jobservice主要用于远程同步)
max_job_workers: 10

镜像作业的复制线程为10

Docker-harbor私有仓库_第6张图片

./prepare #编译环境

Docker-harbor私有仓库_第7张图片

ERROR:root:Error: The protocol is https but attribute ssl_cert is not set

报错原因

https:docker-harbor默认的通信协议是https

https:加密通信协议

解决方法:本地用的是http,需要修改配置文件

将https注释掉之后./install执行一下

Docker-harbor私有仓库_第8张图片

Docker-harbor私有仓库_第9张图片

Docker-harbor私有仓库_第10张图片

docker-compose ps查看一下

Docker-harbor私有仓库_第11张图片

浏览器访问

用户名admin

密码使用修改后的123456

Docker-harbor私有仓库_第12张图片

Docker-harbor私有仓库_第13张图片

本地主机上传镜像

先docker pull拉取镜像

Docker-harbor私有仓库_第14张图片

docker images查看拉取的镜像

Docker-harbor私有仓库_第15张图片

部署(本地)

docker tag  nginx:1.22.0 127.0.0.1/library/nginx:wx

docker tag 标签

library项目名称

上传公开镜像

Docker-harbor私有仓库_第16张图片

发现报错

unauthorized: unauthorized to access repository: library/nginx, action: push: unauthorized to access repository: library/nginx, action: push

原因:要先登录,再上传

Docker-harbor私有仓库_第17张图片

回到页面刷新一下,进入项目里面就可以看到nginx,再点击进去就可以看见镜像

Docker-harbor私有仓库_第18张图片

Docker-harbor私有仓库_第19张图片

Docker-harbor私有仓库_第20张图片

Docker-harbor私有仓库_第21张图片

Docker-harbor私有仓库_第22张图片

创建私有仓库

Docker-harbor私有仓库_第23张图片

访问级别不点公开就是私有的

配额限制-1表示不设上限

Docker-harbor私有仓库_第24张图片

Docker-harbor私有仓库_第25张图片

创建完成角色是项目管理员

创建其他用户

Docker-harbor私有仓库_第26张图片

Docker-harbor私有仓库_第27张图片

Docker-harbor私有仓库_第28张图片

用刚创建完的用户来往私有仓库里面上传镜像

Docker-harbor私有仓库_第29张图片

基于nginx镜像再创建一个标签

仓库名称变为私有仓库的名称

docker tag nginx:1.22.0 127.0.0.1/test/nginx:wwx1

docker images查看一下

Docker-harbor私有仓库_第30张图片

docker push拉取镜像报错

unauthorized: unauthorized to access repository: test/nginx, action: push: unauthorized to access repository: test/nginx, action: push

Docker-harbor私有仓库_第31张图片

错误原因:没有权限,他在项目当中没有没有添加任何信息,系统不知道他是谁,这个用户对项目没有任何操作权限

解决方法:在成员里面添加这个用户

Docker-harbor私有仓库_第32张图片

Docker-harbor私有仓库_第33张图片

创建用户用户的角色

角色:

访客:只能看,只有读权限

开发者:可以有读写权限,但是没有删除权限。

维护人员:读写权限,修改其他配置项的权限。

项目管理员:只对该项目拥有所有权限。

Docker-harbor私有仓库_第34张图片

添加成功之后就可以上传了

Docker-harbor私有仓库_第35张图片

查看一下镜像仓库

Docker-harbor私有仓库_第36张图片

注:只有管理员账户才能进行多种操作,其他用户登陆则没办法进行多种操作

Docker-harbor私有仓库_第37张图片

前面只是在本地进行操作,远程操作如下

docker login -u wwx -p Wxiang666 http:/20.0.0.181

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://http/v2/": dial tcp: lookup http on 218.2.135.1:53: read udp 20.0.0.181:57968->218.2.135.1:53: i/o timeout

报错原因:docker-harbor默认使用http端口,https端口不接受

解决方法:修改docker-server的配置文件

vim /usr/lib/systemd/system/docker.service

修改13行insecure-registryDocker-harbor私有仓库_第38张图片

再登陆即可

Docker-harbor私有仓库_第39张图片

拉取完成之后,查看一下

Docker-harbor私有仓库_第40张图片

修改一下标签,然后上传到仓库上

Docker-harbor私有仓库_第41张图片

进入项目里面查看一下

Docker-harbor私有仓库_第42张图片

Docker-harbor私有仓库_第43张图片

远程主机上传镜像就完成了

需要注意:远程主机要修改/usr/lib/systemd/system/docker.service文件才行

否则会报错,因为默认使用443端口,http默认是80端口所以上传不上去,没有https

要先登录,登录改标签,改完标签之后上传

如何实现仓库之间进行同步

将docker1的镜像传到docker3里面

镜像在/data/registry/docker/registry/v2/repositories/test/logstash里面

Docker-harbor私有仓库_第44张图片

把这个镜像如何传给docker3

首先准备环境

Docker-harbor私有仓库_第45张图片

Docker-harbor私有仓库_第46张图片

Docker-harbor私有仓库_第47张图片

修改配置文件

vim harbor.yml

Docker-harbor私有仓库_第48张图片

Docker-harbor私有仓库_第49张图片

配置环境

Docker-harbor私有仓库_第50张图片

Docker-harbor私有仓库_第51张图片

安装

./install

Docker-harbor私有仓库_第52张图片

Docker-harbor私有仓库_第53张图片

注:如果后面改了配置文件,需要重新./install.sh一下

Docker-harbor私有仓库_第54张图片

Docker-harbor私有仓库_第55张图片

Docker-harbor私有仓库_第56张图片

一样,登录一下

Docker-harbor私有仓库_第57张图片

Docker-harbor私有仓库_第58张图片

接下来在docker3里面把docker1的镜像拉取到docker3上

Docker-harbor私有仓库_第59张图片

拉取要有源仓库,要选择目标Docker-harbor私有仓库_第60张图片

创建目标

Docker-harbor私有仓库_第61张图片

测试连接

Docker-harbor私有仓库_第62张图片

Docker-harbor私有仓库_第63张图片

再回到复制管理,新建规则

Docker-harbor私有仓库_第64张图片

不选,默认拉取库里面的所有镜像

Docker-harbor私有仓库_第65张图片

开始复制

Docker-harbor私有仓库_第66张图片

Docker-harbor私有仓库_第67张图片

复制成功

Docker-harbor私有仓库_第68张图片

Docker-harbor私有仓库_第69张图片

查看一下

Docker-harbor私有仓库_第70张图片

Docker-harbor私有仓库_第71张图片

你可能感兴趣的:(docker,eureka,容器)