Harbor
一、背景
Docker中要使用镜像,我们一般都会从本地、Docker Hub公共仓库或者其它第三方的公共仓库中下载镜像,但是出于安全和一些内外网的原因考虑,企业级上不会轻易使用。普通的Docker Registry又不满足需求,所以一般可以利用Harbor搭建一个企业级的私有镜像仓库。
二、简介
Harbor是构建企业级私有docker镜像仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库(helm就相当于k8s的yum)。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。
Harbor安装有3种方式:
  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  • OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor
本文记录通过离线安装的方式部署
前提条件:安装企业仓库不能有registry,否则冲突
1、下载一个docker-compse工具
离线安装docker-compse工具
[root@docker01 ~]# ls
docker-compose.1.25.0.tar.gz harbor-offline-installer-v2.0.2.tgz
[root@docker01 ~]# tar zxpf docker-compose.1.25.0.tar.gz -C
/usr/local/bin/
[root@docker01 ~]# cd /usr/local/bin/
[root@docker01 bin]# ls
docker-compose-Linux-x86_64
[root@docker01 bin]# mv docker-compose-Linux-x86_64 docker-compose
[root@docker01 bin]# chmod +x /usr/local/bin/docker-compose
[root@docker01 bin]# docker-compose -v
docker-compose version 1.25.0, build 0a186604
//下载依赖包
[root@docker bin]# yum -y install yum-utils device-mapper-persistentdata lvm2
2、harbor离线模式
直接在百度搜 harbor进官网 harbor的部署方式,有在线和离线两种方式,考虑到网速原因,这里我们采用离线下载方式。
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz
[root@docker01 ~]# tar -zxf harbor-offline-installer-v2.0.2.tgz  -C /usr/local/
[root@docker01 ~]# cd /usr/local/harbor/
[root@docker harbor]# ls
common.sh harbor.v2.0.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
[root@docker01 harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker01 harbor]# vim harbor.yml
修改hostname=IP
注释掉https,我们就用http就可以了。如果要用https需要开启nginx sll为on

// 修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动,并且注意,harbor默认使用的是80端口,最好确认是否有冲突,或者也可以在docker-compose.yml中修改对应的端口
[root@docker01 harbor]# systemctl daemon-reload
[root@docker01 harbor]# systemctl restart docker
[root@docker01 harbor]# ./install.sh

查看和监控

[root@docker01 harbor]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af0d3f823c92 goharbor/registry-photon:v2.0.2 "/home/harbor/entryp…" About a minute ago Up 2 seconds (health: starting) 5000/tcp registry
ce229f6b7e37 goharbor/harbor-db:v2.0.2 "/docker-entrypoint.…" About a minute ago Up 2 seconds (health: starting) 5432/tcp harbor-db
a357025287c1 goharbor/harbor-log:v2.0.2 "/bin/sh -c /usr/loc…" About a minute ago Up 2 seconds (health: starting) 127.0.0.1:1514->10514/tcp harbor-log harbor-log
harbor使用
//在执行此命令是一定要在模板目录下!
[root@docker01 harbor]# pwd
/usr/local/harbor [root@docker harbor]# docker-compose start
Starting log ... done
Starting registry ... done
Starting registryctl ... done
Starting postgresql ... done
Starting portal ... done
Starting redis ... done
Starting core ... done
Starting jobservice ... done
Starting proxy ... done [root@docker01 harbor]# netstat -anput | grep 80
tcp 0 0 127.0.0.1:51580 127.0.0.1:1514 ESTABLISHED 6286/dockerd
tcp 0 0 127.0.0.1:1514 127.0.0.1:51580 ESTABLISHED 6474/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 8355/docker-proxy
 
docker client的设置
//因为docker不支持https的原因,我们也需要将docker的配置文件进 行更改。
[root@docker02 /]# vim /usr/lib/systemd/system/docker.service
.....
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.10
....
[root@docker02 /]# systemctl daemon-reload
[root@docker02 /]# systemctl restart docker
客户端登录与上传镜像
[root@docker02 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 latest 7e6257c9f8d8 5 months ago 203MB
[root@docker02 ~]# docker tag centos7:latest 192.168.1.10/test/centos:7
//重新打个标签
[root@docker02 ~]# docker login -u admin -p Harbor12345 192.168.1.10
//登录
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
[root@docker02 ~]# docker push 192.168.1.10/test/centos
//上传
The push refers to repository [192.168.1.10/test/centos]
613be09ab3c0: Pushed
7: digest: sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9 size: 529
[root@docker ~]# docker images
//查看harbor仓库所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.10:5000/httpd-iso latest 740e9757f71d 4 hours ago 567MB

命令总结

#推送之前先登录Harbor
docker login docker login registry.test.myop.com -u admin -p Harbor12345
提示success登录成功 查看自己有哪些镜像;docker images
把需要上传到Harbor的镜像运行如下命令就可以了
#镜像打标签
docker tag 镜像名:标签 私服地址/仓库项目名/镜像名:标签 #推送到私服
docker push 私服地址/仓库项目名/镜像名:标签 #从私服拉取镜像
docker pull 私服地址/仓库项目名/镜像名:标签
也可以在web界面复制下载路径
#通过compose关闭harbor容器服务
docker-compose down

docker的企业级仓库-harbor的更多相关文章

  1. 菜鸟系列docker——搭建私有仓库harbor(6)

    docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...

  2. docker的私有化仓库harbor搭建

    目前比较流行的docker私有化仓库是harbor,harbor是一个github开源的项目,直接在github上搜索即可,下载地址:https://github.com/goharbor/harbo ...

  3. Docker私有镜像仓库Harbor

    一.安装Harbor(离线安装包的方式安装) 1.解压离线包 2.进入harbor目录中编辑harbor.yml 3.安装docker-compose yum -y install docker-co ...

  4. 企业级Docker容器镜像仓库Harbor的搭建

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

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

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

  6. 企业级仓库harbor搭建

    1.Harbor是什么? Harbor是Vmvare中国团队开发的开源registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务.在企业 ...

  7. 容器技术之Docker私有镜像仓库harbor

    前文我们聊到了docker的私有镜像仓库docker-distribution的搭建和简单的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13058338 ...

  8. docker 搭建私有仓库 harbor

    前提 已安装好 docker 和  docker-compose 环境:CentOS Linux release 7.5 docker 版本:18.09.05 1.安装harbor wget -P / ...

  9. docker 系列 - 企业级私有镜像仓库Harbor部署(转载)

     本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f  , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...

随机推荐

  1. mysql—if函数

    在mysql中if()函数的具体语法如下:IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值. 开始实 ...

  2. java 不利用第三个变量的情况下将值互换

    package com.zcj.eg001; public class VarChange { public static void main(String[] args) { int a = 10; ...

  3. IP2188中文资料书

    IP2188 是一款集成 12 种.用于 USB 输出端口的快充协议 IC,支持 USB 端口充电协议.支持 11种快充协议,包括 USB TypeC PD2.0/PD3.0/PPS DFP,HVDC ...

  4. 中断与系统调用深度分析(以网络编程接口SocketAPI为例)

    1.从计算机CPU与I/O设备的交互方式谈起 计算机CPU与I/O设备的交互方式有最早的程序查询(也叫轮询)方式,发展到后来的程序中断方式,DMA方式等.简单来说,最早的程序查询方式的机制是,CPU若 ...

  5. 解决Ajax同源政策的方法【JSONP + CORS + 服务器端解决方案】

    解决Ajax同源政策的方法 使用JSONP解决同源限制问题 jsonp是json with padding的缩写,它不属于Ajax请求,但它可以模以Ajax请求.\ 步骤 1.将不同源的服务器端请求地 ...

  6. Navicat 创建mysql存过、定时执行存过

    创建存过: 使用Navicat for MySQL工具创建存储过程步骤: 1. 新建函数(选择函数标签 -> 点击新建函数): 2.输入函数的参数个数.参数名.参数类型等: 3.编写存储过程: ...

  7. ELK (elasticsearch+kibana+logstash+elasticsearch-head) 华为云下载地址

    https://mirrors.huaweicloud.com/elasticsearch https://mirrors.huaweicloud.com/kibana https://mirrors ...

  8. Xamarin.Forms: 无限滚动的ListView(懒加载方式)

    说明 在本博客中,学习如何在Xamarin.Forms应用程序中设计一个可扩展的无限滚动的ListView.这个无限滚动函数在默认的Xamarin.Forms不存在,因此我们需要为此添加插件.在这里我 ...

  9. Lucene 查询原理 传统二级索引方案 倒排链合并 倒排索引 跳表 位图

    提问: 1.倒排索引与传统数据库的索引相比优势? 2.在lucene中如果想做范围查找,根据上面的FST模型可以看出来,需要遍历FST找到包含这个range的一个点然后进入对应的倒排链,然后进行求并集 ...

  10. net.core.somaxconn net.ipv4.tcp_max_syn_backlog

    Linux参数-net.core.somaxconn与net.ipv4.tcp_max_syn_backlog_梁海江的博客-CSDN博客_net.ipv4.tcp_max_syn_backlog h ...