为什么要搭建私有镜像仓库

  对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像。既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像。我们可以非常方便的把我们自己镜像推送上去,但是Docker hub提供的私有仓库个数有限。对于个人来说Docker hub是个不错的选择,但是对于企业来说,相对于安全 ,成本和公司的架构来说搭建自己的私有镜像仓库才是正确的道路。

什么是Harbor?为什么要选择Harbor

  Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

  • 基于角色的访问控制 - 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制 - 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持 - Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API - RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单 - 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

    这就是官网原话。完美解释了什么是Harbor?为什么要选择Harbor。上面解释那么多的Harbor, 现在我们来开始安装吧。

Harbor安装

  要安装Harbor,有以下几个先决条件:

    Python版本大于或者等于2.7

    
Docker engine的版本大于等于1.10

    Docker Compose的版本大于1.6.0

  首先我们需要检查自己服务器是否支持上面3个条件。输入以下代码检查

#python2.7官网安装页面
https://www.python.org/downloads/release/python-2711/
#检查Python版本.Ubuntu 16.04已经集成了python2.7。
python -V
#检查Docker的版本
docker -v
#Docker Compose安装脚本
sudo curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#检查Docker Compose的版
docker-compose --version
#如果提示Permission denied。执行以下语句赋权
sudo chmod +x /usr/local/bin/docker-compose

  确保服务器上的软件版本已经满足以上要求之后。我们现在开始安装Harbor。如果不知道怎么安装docker 可以参考我博客之前的文章。传送门

下载Harbor
#下载安装包
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
#解压
tar -xzf harbor-offline-installer-v1.1.2.tgz
cd harbor
#编辑配置文件
vi harbor.cfg
配置文件注释参考
## Configuration file of Harbor

#设置访问地址,支持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_admin_password = Harbor12345 #harbor认证模式,默认为db_auth,本地mysql,也可以配置ldap认证
auth_mode = db_auth #ldap认证配置
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid
ldap_scope = 3 #mysql数据库设置
db_password = root123
self_registration = on
use_compressed_js = on
max_job_workers = 3
token_expiration = 30
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
project_creation_restriction = everyone #SSL证书地址。只有开启https访问才生效
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
#############

  以上按照自己需求修改。如果想开启https模式访问需要自己申请ssl证书。harbor默认监听80端口。如果需要修改端口。请修改目录下的docker-compose.yml文件,



修改完成之后。运行

sudo ./install.sh

  进行安装。安装完成之后他会自己启动。这里他会自己下载一些他所需的images。过程有点慢。可以通过阿里云的镜像加速器来加速。阿里云镜像加速器 .打开链接登录之后点击镜像加速。然后你会得到一个专属加速地址。如图

可以根据自己的环境查看文档安装使用。然后等待命令执行结束。

开启https

  如果使用http的这里可以跳过,我们把已经申请好的证书文件放到/data/cert 目录下面。然后修改harbor.cfg文件



  安装成功之后打开之前自己设定的域名或者IP地址。测试地址 。测试用户名:harbor_test,测试密码:Harbor_test123

使用harbor

创建用户

harbor已经创建成功。现在我们来开始创建一个用户。

创建项目

创建项目,并添加用户

上传镜像

  首先使用docker login命令登录:

#登录
robin:~ robin$ sudo docker login shepherd618.cn
Username: admin
Password:
Login Succeeded
#查看本地镜像
robin:docker_demo robin$ sudo docker images
Password:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_demo latest fdd994bee741 19 seconds ago 283MB
node 8.9-alpine 406f227b21f5 2 weeks ago 68.1MB
#给dcoker_demo新增tag
robin:docker_demo robin$ sudo docker tag docker_demo shepherd618.cn/test/demo
#push images
robin:docker_demo robin$ docker push shepherd618.cn/test/demo
The push refers to repository [shepherd618.cn/test/demo]
f8387a884f73: Layer already exists
d74f9d9e7013: Pushed
f846841ed47f: Layer already exists
0198944a9875: Layer already exists
9dfa40a0da3b: Layer already exists
latest: digest: sha256:5b33acc5edf6f48cbd8e7ccd216daa4a7da1ebd4871fbc68bc2517136f1ccf44 size: 1374

然后打开harbor,会看到刚刚上传的images和操作日志



当我们需要用到这个images的时候可以通过上面给的pull命令下载到本地。到此整个安装过程结束。

docker进阶-搭建私有企业级镜像仓库Harbor的更多相关文章

  1. 企业级镜像仓库harbor搭建

    企业级镜像仓库harbor搭建 一.    Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...

  2. 企业级镜像仓库 harbor

    企业级镜像仓库 harbor 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:跨 Docker 宿主机网络 overlay 类型 h ...

  3. Docker: 企业级镜像仓库Harbor的使用

    上一节,演示了Harbor的安装部署 这次我们来讲解 Harbor的使用. 我们需要了解到: 1. 如何推镜像到镜像仓库 2. 如何从镜像仓库拉取镜像 3. 如何运行从私有仓库拉取的镜像 # 查看 h ...

  4. 私有容器镜像仓库harbor

    私有镜像仓库Harbor 1.Harbor概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用 ...

  5. 使用docker搭建“企业级镜像仓库”Harbor

    一.前沿 docker的官方镜像仓库registry,功能比较单一,不太好用,特别是删除镜像操作,不够友好. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一 ...

  6. Docker 企业级镜像仓库 Harbor 的搭建与维护

    目录 一.什么是 Harbor 二.Harbor 安装 2.1.Harbor 安装环境 2.2.Harbor安装 2.3 配置HTTPS 三.Harbor 的使用 3.1.登录Harbor并使用 3. ...

  7. 【Docker】企业级镜像仓库harbor的搭建(http/https)及使用

    一:用途 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 二:安装docker-ce 环境:阿里云轻量应用服务器CentOS 7.3 这里通过yum Docker源仓 ...

  8. docker企业级镜像仓库Harbor管理

    Harbor概述 Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: ...

  9. 企业级镜像仓库Harbor

    介绍: Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面, ...

随机推荐

  1. cmd 与 bash 基础命令入门

    身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>∀<) cmd 与 bash 基础命令入门       简介       CMD 基础命令          ...

  2. CSS学习(一)---使用CSS的四种方式

      1. 行内样式 例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. Vi/Vim的快捷方式

    1 vi/ vim键盘图 2 文字解说 进入编辑模式的6种方式: i在光标前插入 I在行首插入 a在光标后插入 A在行末插入 o在下一行插入 O在上一行插入 删除字符 x 删除当前字符 X 删除前一个 ...

  4. UITableView 的使用小点

    1.系统默认的颜色设置//无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle = ...

  5. 使用单元素的枚举类型实现Singleton

    从java1.5版本开始,实现singleton出现了第三种方式: public enum SingleTon { INSTANCE; public void speak() { System.out ...

  6. Java注释用处

    1.Java注释: import cn.lonecloud.Doc; /** * Created by lonecloud on 2017/8/17. * 测试注释类型 {@link Doc#test ...

  7. puppeteer,新款headless chrome!

    puppeteer puppeteer是一种谷歌开发的Headless Chrome,因为puppeteer的出现,业内许多自动化测试库停止维护,比如PhantomJS,Selenium IDE fo ...

  8. PHP秒杀系统全方位设计(一)

    秒杀系统特点人多商品少时间短流量高外挂机器[黄牛和非黄牛] 技术分析瞬间高并发的处理能力多层次的分布式处理能力人机交互与对抗[12306验证码图片] 技术选型分析Linux+Nginx+PHP+Mys ...

  9. Acm弱校奋斗史

    我也是来自弱校的,没有教练,甚至老师都不理我们这种Acmer.看完这篇文章感触颇深. 原文链接 http://acmicpc.info/archives/369 原文 题解:还记得2年前的一个晚上,我 ...

  10. 记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖,编码集问题无法读取文件等.

    spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 ...