千家信息网

详解基于Harbor搭建Docker私有镜像仓库

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,什么是 Harbor?第一次使用这个的时候是刚进公司处理的第一个任务的时候,发现 Harbor 就是一个用于存储和分发 Docker 镜像的企业级Registry 服务器。网上找到一个 Harbor
千家信息网最后更新 2025年12月01日详解基于Harbor搭建Docker私有镜像仓库

什么是 Harbor?

第一次使用这个的时候是刚进公司处理的第一个任务的时候,发现 Harbor 就是一个用于存储和分发 Docker 镜像的企业级Registry 服务器。

网上找到一个 Harbor 的架构图:

Harbor 是 VMware 公司开源的企业级 DockerRegistry 项目,项目地址为 https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的 registry 为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署。

环境准备

1、自己在腾讯云买的服务器(CentOS7.3)

2、Docker 版本:17.05.0-ce

3、Docker-compose:1.17.1

4、Harbor:1.1.2

安装 Docker

因为系统是 CentOS 7.3 ,内核啥的都已经是 3.10,所以不用担心内核升级的问题,一些操作啥的在 7.x 上操作也很方便。

yum update               //系统版本更新vim /etc/yum.repos.d/docker.repo    //添加以下内容[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/7/enabled=1gpgcheck=1gpgkey=https://yum.dockerproject.org/gpg//下面安装 Docker 引擎yum install docker-engine -y//安装docker引擎,此步也可作为更新docker版本的操作:先#systemctl stop docker 停止docker服务,再#yum install docker-engine 更新docker版本systemctl enable docker.servicesystemctl start  docker       //启动docker守护进程docker info              //查看docker运行情况docker -v              //查看版本信息

修改 Docker 配置文件 /etc/default/docker 如下:

复制代码 代码如下:
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io" //换成国内的镜像加速源,不然拉取镜像简直龟速,不想在吐槽了

使用 service docker restart 重启 Docker 服务即可。

或者用官方提供的方式:

复制代码 代码如下:curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ef017c13.m.daocloud.io[/code]

安装 Docker-compose

如果是想直接命令安装也行,

下载指定版本的docker-compose

[code]
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

对二进制文件赋可执行权限

chmod +x /usr/local/bin/docker-compose

测试下docker-compose是否安装成功

docker-compose --version

出现如下

docker-compose version 1.17.1, build 6d101fb

但是,这种方法简直龟速,幸好还有种方法,

见这里:https://docs.docker.com/compose/install/#install-compose

这种需要通过 Python 的 pip 安装

安装 pip

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gztar -vxf setuptools-1.4.2.tar.gzcd setuptools-1.4.2python2.7 setup.py install    //因为服务器自带 Python 2.7easy_install-2.7 pip

安装 docker compose

pip install docker-composedocker-compose --version  //测试安装是否成功

安装 Harbor

wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz#离线安装包,也是龟速,把这个下载链接用迅雷下载,速度却贼快,嘿嘿,然后再传到服务器上去,整个过程快很多!tar -zxvf harbor-offline-installer-v1.1.2.tgz

解压缩之后,进入目录下会看到 harbor.cfg 文件,该文件就是 Harbor 的配置文件。

## Configuration file of Harbor# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhosthostname = 115.159.227.249  #这里我先配置我的服务器IP地址# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置onui_url_protocol = http# mysql数据库root用户默认密码root123,实际使用时修改下db_password = root123#Maximum number of job workers in job servicemax_job_workers = 3#Determine whether or not to generate certificate for the registry's token.#If the value is on, the prepare script creates new root cert and private key#for generating token to access the registry. If the value is off the default key/cert will be used.#This flag also controls the creation of the notary signer's cert.customize_crt = on#The path of cert and key files for nginx, they are applied only the protocol is set to httpsssl_cert = /data/cert/server.crtssl_cert_key = /data/cert/server.key#The path of secretkey storagesecretkey_path = /data#Admiral's url, comment this attribute, or set its value to NA when Harbor is standaloneadmiral_url = NA#NOTES: The properties between BEGIN INITIAL PROPERTIES and END INITIAL PROPERTIES#only take effect in the first boot, the subsequent changes of these properties#should be performed on web ui#************************BEGIN INITIAL PROPERTIES************************#Email account settings for sending out password resetting emails.#Email server uses the given username and password to authenticate on TLS connections to host and act as identity.#Identity left blank to act as username.email_identity =email_server = smtp.mydomain.comemail_server_port = 25email_username = sample_admin@mydomain.comemail_password = abcemail_from = admin email_ssl = false##The initial password of Harbor admin, only works for the first time when Harbor starts.#It has no effect after the first launch of Harbor.# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345harbor_admin_password = Harbor12345# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证auth_mode = db_auth#The url for an ldap endpoint.ldap_url = ldaps://ldap.mydomain.com#A user's DN who has the permission to search the LDAP/AD server.#If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com#the password of the ldap_searchdn#ldap_search_pwd = password#The base DN from which to look up a user in LDAP/ADldap_basedn = ou=people,dc=mydomain,dc=com#Search filter for LDAP/AD, make sure the syntax of the filter is correct.#ldap_filter = (objectClass=person)# The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD ldap_uid = uid#the scope to search for users, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREEldap_scope = 3#Timeout (in seconds) when connecting to an LDAP Server. The default value (and most reasonable) is 5 seconds.ldap_timeout = 5# 是否开启自注册self_registration = on# Token有效时间,默认30分钟token_expiration = 30# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)project_creation_restriction = everyone#Determine whether the job service should verify the ssl cert when it connects to a remote registry.#Set this flag to off when the remote registry uses a self-signed or untrusted certificate.verify_remote_cert = on#************************END INITIAL PROPERTIES************************

启动 harbor,修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务。

启动完成后,我们访问刚设置的 hostname 即可,http://115.159.227.249/,默认是80端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射。

登录 Web Harbor , 输入用户名 admin,默认密码(或已修改密码)登录系统。

我们可以看到系统各个模块如下:

项目:新增/删除项目,查看镜像仓库,给项目添加成员、查看操作日志、复制项目等

日志:仓库各个镜像create、push、pull等操作日志

系统管理

  1. 用户管理:新增/删除用户、设置管理员等
  2. 复制管理:新增/删除从库目标、新建/删除/启停复制规则等
  3. 配置管理:认证模式、复制、邮箱设置、系统设置等

其他设置

  1. 用户设置:修改用户名、邮箱、名称信息
  2. 修改密码:修改用户密码

注意:非系统管理员用户登录,只能看到有权限的项目和日志,其他模块不可见。

我们要尝试下能不能把自己 Docker 里面的镜像 push 到 Harbor 的 library 里来(默认这个 library 项目是公开的,所有人都可以有读的权限,都不需要 docker login 进来,就可以拉取里面的镜像)。

注意:

为了后面留坑,我这里先 在自己的 docker.service 中添加仓库:(这是个坑,建议你先按照我说的做,不然下面可能会一直登录不上)

vim /usr/lib/systemd/system/docker.service#里面的这行修改为:(其实就是添加 --insecure-registry 115.159.227.249 )ExecStart=/usr/bin/dockerd --insecure-registry 115.159.227.249

添加完了后重新启动 docker:

systemctl daemon-reload && systemctl enable docker && systemctl start docker

启动 docker 服务:

service docker start

登录:(为了测试下能否登录成功)

admin登录$ docker login 115.159.227.249Username: adminPassword:Login Succeeded

打 tag 并 push

docker tag ubuntu:15.10 115.159.227.249/library/ubuntu:15.10    //给我的镜像打个 tagdocker push 115.159.227.249/library/ubuntuThe push refers to a repository [115.159.227.249/library/ubuntu]98d59071f692: Pushedaf288f00b8a7: Pushed4b955941a4d0: Pushedf121afdbbd5d: Pushed15.10: digest: sha256:ec89c4a90f45f5e103860191890f48d8379e0504a2881ff706aef0768dc0321b size: 1150

上传完毕后,登录Web Harbor,选择项目 library,就可以看到我刚 push 的镜像了。

同理,你也可以测试下从 Harbor pull 镜像到你的 Docker 中去,这里就不继续演示了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

服务 镜像 用户 项目 登录 管理 文件 系统 密码 版本 日志 服务器 认证 配置 代码 企业 就是 权限 管理员 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 黄浦区信息软件开发信息中心 普陀区大规模软件开发服务密度 服务器转发海康网络相机视频流 网络安全有什么要素 网络技术如何做笔记 阳江app软件开发工具 全球网络安全公司有哪些 资安数据库 和平精英游戏没有服务器怎么办 数据库操作记录 游戏和网络技术的关系 网民热议网络安全 合肥本科生找软件开发 重庆电商软件开发哪家正规 数据库技术与原理课后实验 北京中展汇集软件开发有限公司 服务器开关电源的工作原理 网络安全意识的内涵是什么 新乡小松果网络技术有限公司 js从缓存中获取数据库 黑龙江红色文化馆软件开发系统 高斯查询数据库所有的库 畅捷通工作圈服务器设置 网络安全应急演练宣传报道 昭通南服务器有城际 大数据技术与数据库哪个难 流放者柯南看服务器时间 浦东新区网络技术服务售后服务 1u服务器 家用 湖南轩创网络技术有限公司
0