首页 > 其他分享 >docker仓库

docker仓库

时间:2023-03-18 13:23:23浏览次数:56  
标签:仓库 用户 server Harbor 镜像 docker 认证

Harbor - 企业级 Docker 私有仓库

一 、安装底层需求

  Python应该是2.7或更高版本

  Docker引擎应为1.10或更高版本

  DockerCompose需要为1.6.0或更高版本

 

 

docker-compose:  curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

 

二 、Harbor 安装:  Harbor 官方地址:  https://github.com/vmware/harbor/releases

1、解压软件包:  tar xvf harbor-offline-installer-<version>.tgz

https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

2、配置harbor.cfg

a、必选参数

hostname:   目标的主机名或者完全限定域名

ui_url_protocol:  httphttps 。默认为http

db_password:  用于db_authMySQL数据库的根密码 。更改此密码进行任何生产用途

max_job_workers:    (默认值为3)  作业服务中的复制工作人员的最大数量 。对于每个映像复制作业, 工作人员将存储库的所有标签同步到远程目标 。增加此数字允许系统中更多的并发复制作业 。但是 ,   由于每个工 作人员都会消耗一定数量的网络/ CPU/ IO资源 ,  请根据主机的硬件资源 ,  仔细选择该属性的值

customize_crt:    (onoff。默认为on)  当此属性打开时 ,  prepare脚本将为注册表的令牌的生成/验证创 建私钥和根证书

ssl_cert:  SSL证书的路径 ,  仅当协议设置为https时才应用

ssl_cert_key:  SSL密钥的路径 ,  仅当协议设置为https时才应用

secretkey_path:  用于在复制策略中加密或解密远程注册表的密码的密钥路径

3、创建 https证书以及配置相关目录权限

openssl genrsa -des3 -out server.key 2048

openssl req -new -key server.key -out server.csr

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

mkdir /data/cert

chmod -R 777 /data/cert

4、运行脚本进行安装

./install.sh

5、访问测试

https://reg.yourdomain.com的管理员门户  (将reg.yourdomain.com更改为您的主机名harbor.cfg)  。请注意 ,  默 认管理员用户名/密码为admin / Harbor12345


a、指定镜像仓库地址

vim /etc/docker/daemon.json

{

"insecure-registries": ["serverip"]

}

b、下载测试镜像

docker pull hello-world

c、给镜像重新打标签

docker tag hello-world   serverip/hello-world:latest

d、登录进行上传

docker login serverip

7、其它 Docker客户端下载测试

a、指定镜像仓库地址

vim /etc/docker/daemon.json

{

"insecure-registries": ["serverip"]

}

b、下载测试镜像

docker pull serverip/hello-world:latest

 

三 、Harbor原理说明

1、软件资源介绍

HarborVMware公司开源的企业级DockerRegistry项 目 ,  项 目地址为https://github.com/vmware/harbor。其 目 标是帮助用户迅速搭建一个企业级的Dockerregistry服务 。它以Docker公司开源的registry为基础 ,  提供了管理UI,   基于角色的访问控制(Role BasedAccess Control),  AD/LDAP集成 、  以及审计日志(Auditlogging)等企业用户需求的功 能 ,   同时还原生支持中文 。Harbor的每个组件都是以Docker容器的形式构建的 ,  使用DockerCompose来对它进行部 署 。用于部署HarborDockerCompose模板位于 /Deployer/docker-compose.yml,   由5个容器组成 ,  这几个容器通过    Docker link的形式连接在一起 ,  在容器之间通过容器名字互相访问 。对终端用户而言 ,   只需要暴露 proxy  ( 即       Nginx)  的服务端口

Proxy:   由Nginx 服务器构成的反向代理 。

Registry:   由Docker官方的开源 registry 镜像构成的容器实例 。

UI:   即架构中的 core services,   构成此容器的代码是 Harbor项目的主体 。

MySQL:   由官方 MySQL镜像构成的数据库容器 。

Log:  运行着 rsyslogd的容器 ,  通过 log-driver的形式收集其他容器的日志

 

 

2Harbor特性

a、基于角色控制:  用户和仓库都是基于项目进行组织的 ,   而用户基于项目可以拥有不同的权限 b、基于镜像的复制策略:  镜像可以在多个Harbor实例之间进行复制

c、支持LDAP:  Harbor的用户授权可以使用已经存在LDAP用户

d、镜像删除 & 垃圾回收:  Image可以被删除并且回收Image占用的空间 ,  绝大部分的用户操作API,   方便 用户对系统进行扩展



e、用户UI:  用户可以轻松的浏览 、搜索镜像仓库以及对项目进行管理

f、轻松的部署功能:  Harbor提供了onlineoffline安装 ,   除此之外还提供了virtualappliance安装

gHarbordocker registry 关系:  Harbor实质上是对 docker registry 做了封装 ,  扩展了自己的业务模块

 

 

 

 

 

3Harbor认证过程

adockerdaemondocker registry拉取镜像 。

b、如果dockerregistry需要进行授权时 ,  registry将会返回401 Unauthorized响应 ,   同时在响应中包含了docker client如何进行认证的信息 。

cdockerclient根据registry返回的信息 ,   向authserver发送请求获取认证token

dauthserver则根据自己的业务实现去验证提交的用户信息是否存符合业务要求 。

e、用户数据仓库返回用户的相关信息 。

fauthserver将会根据查询的用户信息 ,  生成token令牌 ,   以及当前用户所具有的相关权限信息 .上述就是 完整的授权过程 .当用户完成上述过程以后便可以执行相关的pull/push操作 。认证信息会每次都带在请求头中

 

 

 

 

Harbor整体架构

 

4Harbor认证流程

a、首先 ,  请求被代理容器监听拦截 ,  并跳转到指定的认证服务器 。

b、   如果认证服务器配置了权限认证 ,  则会返回401。通知dockerclient在特定的请求中需要带上一个合法的 token。而认证的逻辑地址则指向架构图中的core services

c、   当docker client接受到错误code 。client就会发送认证请求(带有用户名和密码)coreservices进行basic auth认证 。

d、   当C的请求发送给ngnix以后 ,  ngnix会根据配置的认证地址将带有用户名和密码的请求发送到core serivces

e、   coreservices获取用户名和密码以后对用户信息进行认证( 自己的数据库或者介入LDAP都可以)。成功以 后 ,  返回认证成功的信息

 

Harbor认证流程

 

 

 

 

 

标签:仓库,用户,server,Harbor,镜像,docker,认证
From: https://www.cnblogs.com/jiutang001/p/17229794.html

相关文章

  • docker 安装 MinIO
    MinIO安装官网地址:https://min.io/文档地址:https://min.io/docs一、Docker环境安装安装docker镜像dockerpullminio/minio运行容器dockerrun-p19000:9000......
  • Docker Mysql限制内存
    买了个阿里云的1G单核的服务器,运行了Docker装了数据库占用内存2/3的内存,然后再跑个Java小型程序直接死机,无奈只能减小mysql内存解决后效果:查询了网上资料总结解决方案:......
  • docker端口映射
    概述有的时候遇见问题有点懵,对基础的东西不是很清楚导致判断,不明确遇见一个mysql容器端口映射,在其他的网段无法远程登录到容器内的mysql后分析发现是没有开启ip_forwar......
  • Docker安装及使用
    Docker安装及使用安装gcc和g++1.检查gcc和g++是否安装好,如果没有安装好,则需要安装。yum-yinstallgccyum-yinstallgcc-c++2.安装需要的软件包yuminstall-yyu......
  • Docker CLI docker config create 常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Doc......
  • 让Dockerfile里的包管理器也用上缓存
    问题FROMpython:3.9COPYrequirements.txt.RUNpipinstall-rrequirements.txt当使用类似以上的Dockerfile来构建镜像,无论是第几次构建镜像pip都要重新下载req......
  • 【转】git将子目录拆分独立仓库并保存提交记录
    原文:https://blog.csdn.net/afgasdg/article/details/113113697 ----------------git将子目录拆分独立仓库并保存提交记录1.需求说明项目原来很大,将多个子模块柔和在......
  • 软件测试|一文教你轻松搭建docker环境
    前言Docker提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在......
  • 软件测试|使用docker搞定 Python环境搭建
    前言当我们在公司的电脑上搭建了一套我们需要的Python环境,比如我们的版本是3.8的Python,那我可能有一天换了一台电脑之后,我整套环境就需要全部重新搭建,不只是Python,我们一系......
  • docker图形化界面管理与监控
    一、cadvisordockerpull google/cadvisordockerrun-it-p8890:8080-v/var/run:/var/run-v/db/docker:/var/lib/docker:ro-v/sys:/sys:rogoogle/cadvisor/bi......