Harbor是一个开源企业级Docker注册中心,可以用于搭建私有的Docker Image仓库。可以实现权限控制等。

安装Harbor

首先,需要安装Docker和Docker Compose,参考其它文章。

Harbor 0.5.0需要:

  • Docker 1.10
  • Docker Compose 1.6.0
  • Python 2.7或更高版本(且不是系统自带的Python解释器)

Docker与Docker Compose安装可以参考这篇文章

本文中选择将Harbor的密码存储在MySQL中,Harbor使用的MySQL是安装包中集成的MySQL的Docker镜像,所以如果系统没有MySQL也不需要事先安装

获取Harbor安装程序

Harbor安装程序有在线安装离线安装两种,安装方式都一样,根据需要选择。(下面二选一)

tar xvf harbor-online-installer-<version>.tgz #在线安装文件
tar xvf harbor-offline-installer-<version>.tgz #离线安装文件

首先要确定Harbor安装位置并切换到那个文件夹下,如/usr/local:cd /usr/local

修改配置

下载解压完后,需要先修改配置然后才能开始安装:

cd harbor
nano harbor.cfg

关于配置文件几个需要修改的地方:

  • hostname:WebUI的访问地址,可以是IP或域名(但不要使用127.0.0.1或localhost,这将导致无法外部访问)
  • ui_url_protocol:http(默认)或https(需要配置SSL的Nginx)
  • email_config:邮件相关配置,邮件配置用于密码重置等场景
  • harbor_admin_password:用于第一次登录WebUI时的密码,一次有效。默认用户名为admin
  • auth_mode:验证方式,db_auth(本地MySOL存储密码)或ldap_auth(LDAP)
  • ldap_config:auth_mode为LDAP时,配置ldap
  • db_password:auth_mode为db_auth时,这个项配置本地MySQL root账号的密码
  • self_registration:是否允许用户注册,on(开放注册)或off(关闭注册,只能管理员添加用户)。此项仅在auth_mode为db_auth时起作用。
  • use_compressed_js:启用js压缩合并,默认为on
  • max_job_workers:最大镜像复制作业并行数,默认为3
  • token_expiration:token过期时间,默认30分钟
  • verify_remote_cert:验证远程注册中心的证书,默认为on,当远程注册中心不适用SSL或使用自签名证书时,设置为off。
  • customize_crt:是否是自签名证书,on(自签名证书,需要设置crt_config一些列选项的值)或off(使用证书颁发机构的证书)
  • crt_config:使用自签名证书时的一些配置项

注意:关于hostname配置,如果使用IP,请确保80端口没有被占用,否则会因为80端口被占用而导致安装后Harbor服务启动失败。

下面是一个配置文件的配置示例:

hostname = 192.168.1.100
ui_url_protocol = http
email_identity =
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true
harbor_admin_password = Harbor12345
auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
# ldap_searchdn =
# ldap_search_pwd =
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com
# ldap_filter =
ldap_uid = uid
ldap_scope = 3
db_password = root123
self_registration = off
use_compressed_js = on
max_job_workers = 3
token_expiration = 30
verify_remote_cert=off
customize_crt = off
# crt_country = CN
# crt_state = State
# crt_location = CN
# crt_organization = mritd
# crt_organizationalunit = mritd
# crt_commonname = mritd.me
# crt_email = reg.mritd.me

示例配置文件中,没有被注释的配置项即使在用不到的情况下也不能注释。

配置存储(可选)

Harbor默认将image存储在本地文件系统,其它可选的位置包括S3,OpenStack Swift等。

这个配置在common/templates/registry/config.yml中的storage一节来配置。

执行安装

修改好上述配置后,就可以执行安装了

./install.sh

如果使用在线安装文件,需要等待image下载完成。

注意:如果主机上的80端口已经被占用,则使用IP安装会失败,请给主机分配域名,并使用域名作为hostname来访问。如果想修改默认的80端口,见修改端口号一节

安装完成后,访问hostname配置的域名或IP即可进入Harbor的管理页面。

第一次使用配置文件中harbor_admin_password中的默认管理员密码,并修改密码。

修改端口号

对于http发布方式,Harbor默认使用80端口,需要修改端口按照如下方法:

修改docker-compose.yml中nginx的配置,将80:80的第一个80改为自定义的端口号。

修改common/templates/registry/config.yml,在auth部分$ui_url后面加上自定义的端口号

修改完成后,运行下面的命令重新配置Harbor

sudo docker-compose down
sudo install.sh

对于第一次安装,直接修改完所有配置文件后执行install.sh就可以了。

停止/启动Harbor

sudo docker-compose stop
sudo docker-compose start

卸载Harbor

执行如下步骤彻底删除Harbor,以便重新安装:

sudo docker-compose down
rm -rf /data/database
rm -rf /data/registry

修改Harbor配置

首先删除container,修改配置,然后运行install.sh重新启动container,命令如下:

sudo docker-compose down
vim harbor.cfg
sudo install.sh

基本使用

无论是从Harbor拉取镜像或着发布镜像到Harbor,第一步都是登录Harbor这个注册中心。

docker login ip:port

按照前文的安装方式,即http安装,这个命令默认都会报错。因为Docker默认要求注册中心以https方式工作。

命令中的端口号也不能省略,因为默认会连接https的443端口

为了让Docker可以连接到http协议的注册中心,需要做以下修改:

  • 对于Docker for Windows

    直接在Settings窗口Deamon选项中Insecure registries中输入Harbor的服务地址即可,如图:

  • 对于Linux上的Docker

    网络中普遍留传的方法如下:

    修改/etc/default/docker这个配置文件,增加如下内容:

    DOCKER_OPTS="$DOCKER_OPTS --insecure-registry 192.168.9.18"

    楼主实测此方法对于新版Docker不可行,主要是根部不存在/etc/default/docker这个配置文件。

    经过一番寻找,对于CentOS7以上的Docker可以使用这种方法(实测可行):

    修改文件/usr/lib/systemd/system/docker.service将其中的行:

    ExecStart=/usr/bin/dockerd

    替换为:

    ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:80

    然后执行如下命令,重新加载配置并重启docker服务:

    systemctl daemon-reload

    systemctl restart docker

    最后执行如下命令,验证docker的启动参数是否为我们所要:

    ps -ef | grep docker

    对于Ubuntu16.04方法类似(未亲测),修改如下配置文件:

    /lib/systemd/system/docker.service,替换其中的

    #ExecStart=/usr/bin/dockerd -H fd://



    ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:5000 -H fd://

    并安装上面介绍的方式重启docker即可。

修改以后先把docker compose停掉,然后重启Docker。(需要在Harbor安装目录下执行。(docker-compose命令都需要在doker-compose.yml所在目录中执行))

对于Windows,在应用更改后,Docker for Windows会自动要求重启。

对于Linux,执行下列命令:

docker-compose stop
service docker restart
docker-compose start

推送image到Harbor,注意,首先需要用tag命令建立源image与目标image的关联

docker tag image:tag ip:port/harbor-project-name/image:tag
docker push ip:port/harbor-project-name/image:tag

ProjectAdmin及Developer两个组的用户有权限push,其它组用户只可以pull

从远程拉取image

docker pull ip:port/harbor-project-name/image:tag

关于Docker的使用可见此文档

其它

  • 当Harbor无法工作时,首先考虑使用sudo docker-compose ps查看所有container是否正常运行
  • Harbor使用rsyslog记录日志,如果遇到问题可以查看/var/log/harbor目录中的日志文件来寻找原因
  • 如果使用配置文件中的密码登录后,无法修改admin的密码(报错为修改密码失败),可以先创建一个用户,然后就可以成功修改admin的密码了。
  • Harbor的数据存储于/data/目录下,卸载或重新安装Harbor都不会影响这个目录的数据

.NET遇上Docker - Harbor的安装与基本使用的更多相关文章

  1. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  2. .NET遇上Docker - Docker集成Cron定时运行.NETCore(ConsoleApp)程序.md

    配置项目的Docker支持 对于VS中Docker的配置,依旧重复一些废话. 给项目添加Docker支持,VS2015可以直接使用Docker for VS插件,VS2017在安装时选择容器支持.VS ...

  3. Docker企业级仓库Harbor的安装配置与使用

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribution.作为一个企业级 ...

  4. Docker harbor 安装和基础操作

    目录 简介 离线安装 配置文件 安装 查看 访问测试 及 简单操作 创建一个用户 创建一个测试仓库 创建测试仓库 测试上传和下载镜像 上传 下载镜像测试 简介 Docker容器应用的开发和运行离不开可 ...

  5. ubuntu 安装企业级容器 docker harbor

    安装docker harbor 企业级容器   环境说明: 操作系统: ubuntu16.04.5 LTS IP地址:  192.168.31.129   https://github.com/goh ...

  6. 初识genymotion安装遇上的VirtualBox问题

    想必做过Android开发的都讨厌那慢如蜗牛的 eclipse原生Android模拟器吧! 光是启动这个模拟器都得花上两三分钟,慢慢的用起来手机来调试,但那毕竟不是长久之计,也确实不方便,后来知道了g ...

  7. Ubuntu上Docker安装Trouble Shooting

    (我的环境是Mint7.1,相当于Ubuntu14.04) 1,首先,根据docker.com上的安装指导来安装docker,这里就不重复了,参考: https://docs.docker.com/i ...

  8. 当DOCKER遇上ESXI

    特别是你要为DOCKER窗口设置静态IP,且和公司局域网打成一片的时候, 苦逼的测试就会开始,我差不多前前后后测试了四五天,一百多个容器报废. NETNS,NSENTER,PIPWORK,各种镜像合下 ...

  9. centos7上docker安装和使用教程

    Docker 是一个创建和管理 Linux 容器的开源工具.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上 ...

随机推荐

  1. Android 视频直播 SDK

    Android 视频直播 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...

  2. python之SQLAlchemy ORM 上

    前言: SQLAlchmey是暑假学的,当时学完后也没及时写博客整理下.这篇博客主要介绍下SQLAlchemy及基本操作,写完后有空做个堡垒机小项目.下篇博客整理写篇关于Web框架和django基础~ ...

  3. Cesium原理篇:3D Tiles(1)渲染调度

    Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D T ...

  4. 对java数组的一些理解

    刚开始学习Java的时候一直搞不清除获取数组的长度是用length()还是length,现在不妨来深入了解一下数组的真实面目. 我们不妨来看一下数组的源码,诶,数组的类名叫什么?我们声明一个int数组 ...

  5. C#-MVC开发微信应用(2)--OAuth2.0网页授权

    微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...

  6. 1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 835  Solved: 398[S ...

  7. background-image 与 img 动画性能对比

    开发H5常常会用到滑屏,目前大部分滑屏插件都是通过控制页面的transform属性来实现.尽管如此,我总是发现自己的H5滑动起来就是不如网上一些优秀案例流畅,表现为滑动动画会出现卡顿.跳帧. 后来我发 ...

  8. js中页面刷新和页面跳转的方法总结 [ 转自欢醉同学 ]

    .js中cookie的基本用法简介 2009-12-15 js中页面刷新和页面跳转的方法总结 文章分类:Web前端 关键字: javascript js中页面刷新和页面跳转的方法总结 1.histor ...

  9. web从入门开始(3)-----第一个网页

    <meta>:是进行网页格式初始化的命令,确定网页使用的文本格式和编码格式 Background:中的路径,必须为相对路径 l  HTML文本标记 <b>HTM文本</b ...

  10. 浅谈对java中锁的理解

    在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...