Docker镜像服务--Harbor1.9搭建

一 Harbor仓库介绍

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker Registry服务。它以Docker公司开源的Registry为基础,额外提供了如下功能:
->  基于角色的访问控制(Role Based Access Control)
->  基于策略的镜像复制(Policy based image replication)
->  镜像的漏洞扫描(Vulnerability Scanning)
->  AD/LDAP集成(LDAP/AD support)
->  镜像的删除和空间清理(Image deletion & garbage collection)
->  友好的管理UI(Graphical user portal)
->  审计日志(Audit logging)
->  RESTful API
->  部署简单(Easy deployment)

Harbor的所有组件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。需要特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本docker-compose必须要大于1.6.0版本

二 Harbor仓库结构

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。

Harbor大概需要以下几个容器组成ui(Harbor的核心服务)、log(运行着rsyslog的容器,进行日志收集)、mysql(由官方mysql镜像构成的数据库容器)、Nginx(使用Nginx做反向代理)、registry(官方的Docker registry)、adminserver(Harbor的配置数据管理器)、jobservice(Harbor的任务管理服务)、redis(用于存储session)。

三 Harbor安装

docker-compose安装
# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

Harbor官方提供了在线和离线两种安装方式,考虑到企业服务器有可能无法访问外网,因此选择离线安装更加实用;

1. Harbor的GitHub仓库的release页面下载离线安装包,

地址是:https://github.com/goharbor/harbor/releases ,如下图红框所示,选择1.9.0:

2. 将离线安装包harbor-offline-installer-v1.9.0.tgz下载到服务器上

执行以下命令解压:
tar -zxvf harbor-offline-installer-v1.9.0.tgz
解压的结果是个名为harbor的文件夹,进入该文件夹;

修改配置文件harbor.yml,主要是修改以下两个配置:
a. hostname:填写本机的IP地址或者hostname,如果已经和域名绑定了也可以填域名;
b. harbor_admin_password:管理员初始密码;

hostname: 10.10.10.10

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 8888


harbor_admin_password: HarborAdmin

data_volume: /home/disk1/harbor-data

更多配置例如https、存储等,请参考官方文档按需设置;
 

3 开始安装

在install.sh文件所在目录执行命令./install.sh即可安装Harbor

Ubuntu:   (sudo vi /etc/default/docker)

DOCKER_OPTS="--insecure-registry 10.10.10.10”

修改/usr/lib/systemd/system/docker.service文件

修改一行  ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn --insecure-registry 10.10.10.10:8888”

为什么要修改这个配置文件呢?--insecure-registry代表本地镜像库,修改了以上配置文件后需要重启docker服务,此时docker login时,将连接指定的本地镜像库。

如果不修改这个配置文件,则登录镜像私服时(docker login 10.10.10.10”)会抛出如下错误

Error response from daemon: Get https://10.10.10.10”/v1/users/: dial tcp 10.10.10.10”:443: getsockopt: connection refused

5、重启docker服务

service docker restart


7、build并启动
docker-compose up -d
8、从docker hub上下载hello-world镜像
docker run hello-world
9、给镜像打标签,以便上传到私服,其中library是harbor默认提供的项目
docker tag hello-world 10.10.20.202/library/hello-world
10、上传镜像
登录镜像私服,执行以下指令,再输入用户名和密码
docker login 10.10.20.202
上传镜像
docker push 10.10.20.202/library/hello-world
11、在浏览器上访问10.10.20.202,用户名:admin,密码:Harbor12345登录完成后,点击library这个项目,即可看到上传的hello-world

以下附带harbor的启动、停止命令

【Build and start Harbor】

$ sudo docker-compose up -d
Creating harbor_log_1
Creating harbor_mysql_1
Creating harbor_registry_1
Creating harbor_ui_1
Creating harbor_proxy_1


【Stop Harbor】

$ sudo docker-compose stop
Stopping harbor_proxy_1 ... done
Stopping harbor_ui_1 ... done
Stopping harbor_registry_1 ... done
Stopping harbor_mysql_1 ... done
Stopping harbor_log_1 ... done
Restart Harbor after stopping

【Start Harbor】

$ sudo docker-compose start
Starting harbor_log_1
Starting harbor_mysql_1
Starting harbor_registry_1
Starting harbor_ui_1
Starting harbor_proxy_1
Remove Harbor's containers while keeping the image data and Harbor's database files on the file system:

【删除Harbor】

$ sudo docker-compose rm
Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1
Are you sure? [yN] y
Removing harbor_proxy_1 ... done
Removing harbor_ui_1 ... done
Removing harbor_registry_1 ... done
Removing harbor_mysql_1 ... done
Remove Harbor's database and image data (for a clean re-installation):

$ rm -rf /data/database
$ rm -rf /data/registry

四 harbor 安装报错

一  harbor-log   Cannot start service redis: failed to initialize logging driver: dial tcp 127.0.0.1:151

 安装harbor时多个依赖于harbor-log的服务无法启动,报错。错误信息如下:

运行:docker logs -f harbor-log命令,发现rsyslogd写入权限有问题,(http://www.rsyslog.com/e/3000)
————————————————
 

删除所有镜像、容器,因为配置没有变化,不担心数据丢失

删除所有的容器,所有的镜像。重新 install
(1)down掉所有拉起的容器且docker-compose 和docker ps 显示都无正在运行的容器
(2)删除镜像,报冲突了罪魁祸首就在这,有类似僵尸“容器”存在,强制删除、./install 脚本

验证完美

二 ERROR: error while removing network: network harbor_harbor id

 docker network disconnect -f harbor_harbor harbor-adminserver

五 Harbor Admin修改

harbor私有仓库,默认密码Harbor12345,不及时修改会过期导致无法登录。

(1)进入容器

docker exec -it harbor-db /bin/bash

(2)连接数据库

psql -h postgresql -d postgres -U postgres 

#默认root123 详见harbor安装配置文件

(3)切换数据库

\c registry

#切换到harbor所在库

(4)更新密码

select user_id,username,password,creation_time,update_time,password_version  from harbor_user;
update harbor_user set password='a71a7d0df981a61cbb53a97ed8d78f3e', salt='ah3fdh5b7yxepalg9z45bu8zb36sszmr',  password_version='sha1' where username='admin';

(5)重启harbor-core

重启harbor-core容器,自动恢复配置时密码 默认Harbor12345 详见配置文件 docker restart harbor-core

docker-compose down
docker-compose up -d
docker-compose ps

admin的密码就已经重置完成,然后就可以使用admin的初始密码 Harbor12345 去登录Harbor

参考资料

Docker私有仓库Harbor介绍和部署记录 - 散尽浮华 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/kevingrace/p/6547616.html巧用Docker镜像仓库Harbor部署私有Mirror服务 - DockOne.io

Harbor项目:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.
官方配置mirror registry文档:https://github.com/docker/dist ... or.md
Daocloud关于mirror的博客:DaoCloud宣布Docker Hub Mirror服务永久免费 - DaoCloud

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是搭建私服镜像中心docker-registry和docker-registry-web的步骤: 1.安装DockerDocker Compose 2.创建一个目录来存储docker-compose.yml文件和证书文件 3.创建docker-compose.yml文件并添加以下内容: ```yaml version: '3' services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_STORAGE_DELETE_ENABLED: "true" REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./data:/var/lib/registry - ./auth:/auth - ./certs:/certs registry-web: restart: always image: mkuchin/docker-registry-web:v0.1.2 ports: - 8080:8080 environment: REGISTRY_URL: https://registry:5000 REGISTRY_WEB_TITLE: Docker Registry REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key volumes: - ./auth:/auth - ./certs:/certs ``` 4.创建一个目录来存储证书文件和htpasswd文件 5.生成证书文件 ```shell openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt ``` 6.生成htpasswd文件 ```shell htpasswd -Bc auth/htpasswd <username> ``` 7.启动docker-compose ```shell docker-compose up -d ``` 8.访问https://<your-domain>:8080,输入用户名和密码即可登录docker-registry-web界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值