5.docker仓库--harbor

首先,先说说harbor是什么?

harbor就是一个类似于hub.docker.com的仓库. 这是我们自己搭建的一个仓库, 如果公司使用, 不可能把镜像都上传到hub.docker.com上, 费钱不说, 也不安全.

所以, 我们需要自己学会搭建一个这样的平台.

下面分几个部分介绍:

1. harbor介绍

2. harbor的核心组件

3. harbor的安装要求

4. harbor安装

5. 创建https证书以及配置相关目录权限

6. 修改harbor配置文件并启动

7. harbor的基本用法

一. harbor介绍

  1. Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。
  2. Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。

二. Harbor核心组件

  • Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
  • db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
  • UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
  • jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
  • Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
  • Registry:镜像仓库,负责存储镜像文件。
  • Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

三. 底层安装需求

1. python 应该是2.7或更高版本

python

2. Docker引擎应为1.10或更高版本

3. Docker Compose需要为1.6或更高版本

四. Harbor安装: Harbor官方地址:

https://github.com/goharbor/harbor/releases 下载offline的版本即可.

国内github很慢, 使用加速器下载: https://toolwa.com/github/

1. 将harbor上传到虚拟机上

2. 解压后,将其放到/usr/local下

五. 创建https证书以及配置相关目录权限

第一步:生成私钥

openssl genrsa -des3 -out server.key 2048

输入密码:123456

第二步: 创建证书请求

openssl req -new -key server.key -out server.csr

输入上一步的密码:123456

第三步:备份

cp server.key server.key.org

第四步:退秘钥

openssl rsa -in server.key.org -out server.key

第五步: 创建证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

第六步:创建目录

mkdir -p /data/cert   //名字不可变

第七步: 将证书拷贝到/data/cert目录下

mv server.* /data/cert/

第八步: 设置文件夹权限

chmod -R 777 /data/cert

六. 修改harbor的配置文件并启动

第一步: 需改配置文件

进入到/usr/local/harbor目录

修改harbor.yml配置文件, 修改内容如下

设置访问的域名为hub.lxl.com
hostname: hub.lxl.com

# 设置https访问的证书
https:
  certificate: /data/cert/server.crt
  private_key: /data/cert/server.key

# 设置root登录密码为123456
harbor_admin_password: 123456

第二步: 执行install.sh脚本

看到这个提示,就是成功了

这是执行

docker ps -a

后台已经执行了一些进程了

第三步: 配置本机macos的hosts

192.168.198.143 hub.lxl.com

指定访问hub.lxl.com的时候,跳转到192.168.198.143服务器上

第四步: 访问harbor请求地址

https://hub.lxl.com/

这个网址, 我通过google打不开, 报异常

使用mac自带的浏览器可以打开, 输入用户名/密码

admin/123456

七. harbor的基本用法

1. 系统管理

登录到harbor仓库以后, 我们可以看到当前有一个公共的项目, 其访问级别是public.

public的含义是, 各个用户登录后都可以看到这个仓库. 这个仓库可以用来存放一些基础镜像

2. 用户管理

添加一个新用户sa, 密码是!QAZ2wsx

在admin账号下,新建一个私有仓库docker. 这个仓库只有admin账户可以访问

使用sa登录, 将看不到docker仓库

第三步: 切换账号sa登录,

sa/!QAZ2wsx

新建一个仓库叫sa, 并且是私有的.

第四步: 我们在192.168.198.143服务器上上传一个镜像, 并push到sa私有仓库

1. 给192.168.198.143添加受信任的域名

{
  "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"],
  "insecure-registries":["hub.lxl.com"]
}

2. 配置本地hosts

192.168.198.143 hub.lxl.com

3. 重启docker

systemctl daemon-reload
systemctl restart docker

这一次docker重启会使用较长的时间, 因为启动的时候会自动启动harbor仓库

docker ps -a

一定要查看一下镜像harbor的镜像是否都启动. 如果没有都启动, 那么进入/usr/local/harbor,执行./install.sh

4. 登录docker仓库

docker login hub.lxl.com

5. 查看镜像镜像上传到harbor的方式

6. 生成tag, 并push到harbor仓库

docker tag tomcat9:latest hub.lxl.com/sa/tomcat9:1.0
docker push hub.lxl.com/sa/tomcat9:1.0

上传完成:

查看harbor结果

我们看到了上传的结果, 接下来pull拉取到192.168.198.142服务器上

第五步. 从harbor仓库将镜像拉取到192.168.198.142服务器

1. 给192.168.198.143添加受信任的域名

{
  "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"],
  "insecure-registries":["hub.lxl.com"]
}

2. 配置本地hosts

192.168.198.143 hub.lxl.com

3. 重启docker

systemctl daemon-reload
systemctl restart docker

这一次docker重启会使用较长的时间, 因为启动的时候会自动启动harbor仓库

docker ps -a

一定要查看一下镜像harbor的镜像是否都启动. 如果没有都启动, 那么进入/usr/local/harbor,执行./install.sh

4. 登录docker仓库

docker login hub.lxl.com

5. 拉取镜像

docker pull hub.lxl.com/sa/tomcat9

成功拉取, 接下来启动镜像, 访问容器就ok了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 4. 镜像的原理

      镜像是一种轻量级, 可执行的独立软件包, 用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容, 包括代码, 运行时, 库, 环...

    用户7798898
  • 1.1 jvm核心类加载器--jdk源码剖析

    我是在mac上操作的. 先找到mac的java地址. 从~/.bash_profile中可以看到

    用户7798898
  • 3. dcoker容器的命令

    docker run是启动容器. 启动的时候, 现在本地查找镜像, 如果本地没有, 则去网络下载

    用户7798898
  • 如何理解Docker镜像分层?且听百度高级研发工程师细细道来

    所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等。

    本人秃顶程序员
  • Rancher2.1.4使用记录 原

        说实话,Rancher的官方文档真的很全,围绕着UI的方方面面都面面俱到。但看多了却发现,很多东西都浅尝辄止,尤其某个东西实在不懂的时候,看文档只能让自...

    尚浩宇
  • 快速学习Docker-Docker-file的指令格式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 单链表判断是否有环和环起始节点

    面试的滴滴研究院暑期实习生,岗位机器学习,二面除了电话面还要视频面试写代码,两个问题: 单链表判断是否有环以及找出环开始的节点 建立二叉排序树并进行中序遍历 因...

    GavinZhou
  • 在群晖Docker中安装Jellyfin媒体服务器

    Jellyfin是一款媒体服务器软件,可在多个平台管理和播放流媒体文件。它是Emby和Plex之外的完美替代品,可通过多个应用程序从专用服务器向终端用户设备提供...

    爱游博客
  • Linux编程--include语法

    error: 'com_domain_test_fileheader.h' file not found with <angled> include; use ...

    None_Ling
  • 使用Linux自带日志滚动工具logrotate滚动redis日志示例

    截至到redis-5.0版本,redis仍然不会自动滚动日志文件,如果不处理则日志文件日积月累越来越大,最终将导致磁盘满告警:

    一见

扫码关注云+社区

领取腾讯云代金券