Docker管理之7—企业镜像仓库Harbor
一、 Harbor的概述
Harbor是由VMWare公司开源的容器镜像仓库。Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更广泛的应用,Harbor被部署为多个Docker容器,因此可以部署在任何支持 Docker 的 Linux发行版上(registry 为其核心组件)。
1、Harbor的优势
- 基于角色控制
- 基于镜像的复制策略
- 支持LDAP/AD
- 图像删除和垃圾收集
- 图像UI
- 审计
- RESTful API
2、Harbor的官方地址及组件
https://github.com/goharbor/harbor
harbor的组件
组件 | 功能 |
---|
harbor-adminserver | 配置管理中心 | harbor-db | mysql数据库 | harbor-jobservice | 负责镜像复制 | harbor-log | 记录操作日志 | harbor-ui | Web管理界面和API | nginx | 前端代理,负责前端页面和镜像上传/下载转发 | redis | 会话 | registry | 镜像存储 |
二、Harbor的安装部署
1、环境要求
- linux主机(例如Centos,redhat,ubuntu等)
- docker版本:17.06.0-ce+
- docker-compose版本:1.18.0+
- 服务器硬件要求:最低CPU2核,内存4G,硬盘40G;推荐CPU4核,内存8G,硬盘160G
2、安装Docker-compose
下载地址:https://github.com/docker/compose/releases/;选着自己需要的版本。
或者将docker-compose下载到本地然后上传至服务器上。
cp /tmp/docker-compose-Linux-x86_64 /usr/sbin/ # 上传后将其拷贝至可执行命令目录下/usr/sbin
chmod +x /usr/sbin/docker-compose-Linux-x86_64 # 附执行权限
ln -s /usr/sbin/docker-compose-Linux-x86_64 /usr/sbin/docker-compose # 对其做软连接
测试;
3、安装harbor
下载地址:https://github.com/goharbor/harbor/releases
因为这些是国外网站,直接在linux服务器上下载非常的慢,所以我将七下载到本地,然后再上传到服务器。
同时我也将我下载好的放到了百度网盘,地址:链接:https://pan.baidu.com/s/1rYY0zJOtE5j9MxBhOoHJcA
提取码:44ew
01 安装部署
tar -xf harbor-offline-installer-v2.5.0.tgz -C /usr/local # 解压到 /usr/local
cd /usr/local/harbor # 进入解压后的目录
cp harbor.yml.tmpl harbor.yml # 拷贝配置文件
vim harbor.yml # 修改配置文件
hostname: 10.1.1.142 # 此处修改为自己的域名或没域名则用服务器IP
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80 # 此处是http协议的80端口,如果生产使用建议修改为其他端口
# https related config
# https: # 此处是https(加密)协议,如果有域名的证书则可以将此处注释打开
# https port for harbor, default is 443
# port: 443 # https协议的端口,有证书需打开此处注释
# The path of cert and key files for nginx
# certificate: /your/certificate/path # ssl证书配置路径,需要将其存放证书路径写上,要绝对路径。
# private_key: /your/private/key/path # ssl证书的密钥,需要将其存放密钥的路劲写上,要绝对路径。
harbor_admin_password: Harbor12345 # web服务登录密码,这里可以修改
# Harbor DB configuration
database: # 数据库相关配置
# The password for the root user of Harbor DB. Change this before any production use.
password: root123 # 数据库密码
# The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
max_idle_conns: 100 # 最大空闲连接
# The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
# Note: the default number of connections is 1024 for postgres of harbor.
max_open_conns: 900 # 最大连接
# The default data volume
data_volume: /data # 数据目录
location: /var/log/harbor # 日志目录
# 其他不配不是很重要,这里不做过多解释。
./prepare # 配置文件修改完成后,执行初始化命令
执行安装启动
./install.sh # 在harbor目录下执行命令
显示这个:? ----Harbor has been installed and started successfully.---- 表示安装完成。
查看启动状态:
web方式查看:
4、 harbor的使用
01、配置http镜像可信任(所有docker服务器都需要配置http信任)
harbor默认的推送是https方式:
docker tag nginx_141 10.1.1.142/library/nginx_141:V1
docker push 10.1.1.142/library/nginx_141:V1
此时报错如下:
The push refers to repository [10.1.1.142/library/nginx_141]
Get https://10.1.1.142/v2/: dial tcp 10.1.1.142:443: connect: connection refused
所以我们需要在docker服务上配置http可信任。
[root@k8s3-142 harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"insecure-registries": ["10.1.1.142"], # 这里需要修改为仓库的http地址或域名,如果有多个则需要用","隔开,例如:"insecure-registries": ["10.1.1.142",“10.1.1.141:8000”],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
再次执行推送:
[root@k8s3-142 harbor]# docker push 10.1.1.142/library/nginx_141:V1
The push refers to repository [10.1.1.142/library/nginx_141]
Get http://10.1.1.142/v2/: dial tcp 10.1.1.142:80: connect: connection refused
同样还是拒绝,原因如下:
因重启了docker服务,所以harbor也就关闭,只需要将其打开即可:
docker-compose up -d
再一次推送测试:
错误提示为没有认证,需要登录仓库。
登录后再测试:
再继续测试推送看是否成功:
此时显示以上推送到仓库上。
web界面查看:
如何使用刚刚推送上去的镜像那,那我再10.1.1.141上拉取刚才的镜像(前提141上也需要配置http信任):
先在10.1.1.141上登录:
02 添加项目
03 添加用户
03 项目上添加用户
|