1、下载离线安装包

环境说明:

主机名

IP

用途

controlnode

172.16.1.70

用于连接docker仓库

slavenode1

172.16.1.71

docker仓库

Harbor 是 Vmware 公司开源的企业级 Docker
Registry 项目。

项目地址:https://github.com/goharbor/harbor

安装说明:https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md

下载地址:

https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz

2、安装docker

# 安装依赖包

[root@slavenode1 ~]# yum install -y yum-utils
device-mapper-persistent-data lvm2

# 添加Docker软件包源

[root@slavenode1 ~]# yum-config-manager
\

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

# 更新为阿里云的源

[root@slavenode1 ~]# wget -O
/etc/yum.repos.d/docker-ce.repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 清理源缓存

[root@slavenode1 ~]# yum clean all

# 安装Docker
CE

[root@slavenode1 ~]# yum install -y
docker-ce

# 启动Docker服务并设置开机启动

[root@slavenode1 ~]# systemctl start
docker

[root@slavenode1 ~]# systemctl enable
docker

# 查看docker版本

[root@slavenode1 ~]# docker -v

Docker version 19.03.12, build
48a66213fe

# 添加阿里云的镜像仓库

[root@slavenode1 ~]# mkdir -p
/etc/docker

[root@slavenode1 ~]# tee /etc/docker/daemon.json
<<-'EOF'

{

"registry-mirrors":
["https://b1cx9cn7.mirror.aliyuncs.com"]

}

EOF

# 重启docker

[root@slavenode1 ~]# systemctl
daemon-reload

[root@slavenode1 ~]# systemctl restart
docker

3、安装docker-compose

# 官方参考文档

https://docs.docker.com/compose/install/

# 下载docker-compose

[root@slavenode1 ~]# curl -L
"https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 为docker-compose赋予可执行权限

[root@slavenode1 ~]# chmod +x
/usr/local/bin/docker-compose

# 查看docker-compose的版本

[root@slavenode1 ~]# docker-compose
-v

docker-compose version 1.26.2, build
eefe0d31

4、自签TLS证书

# 参考文档

https://github.com/goharbor/harbor/blob/master/docs/install-config/configure-https.md

4.1、创建自己的CA证书

[root@slavenode1 ~]# mkdir -p /root/ssl/

[root@slavenode1 ~]# cd /roo/ssl/

[root@slavenode1 ssl]# openssl req \

-newkey rsa:4096 -nodes -sha256 -keyout ca.key
\

-x509 -days 36500 -out ca.crt

Generating a 4096 bit RSA private
key

........................................................................++

.++

writing new private key to 'ca.key'

-----

You are about to be asked to enter information that
will be incorporated

into your certificate request.

What you are about to enter is what is called a
Distinguished Name or a DN.

There are quite a few fields but you can leave some
blank

For some fields there will be a default
value,

If you enter '.', the field will be left
blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name)
[]:

Locality Name (eg, city) [Default
City]:

Organization Name (eg, company) [Default Company
Ltd]:

Organizational Unit Name (eg, section)
[]:

Common Name (eg, your name or your server's hostname)
[]:LiuChang

Email Address []:

[root@slavenode1 ssl]# ls

ca.crt  ca.key

4.2、生成证书签名请求

[root@slavenode1 ssl]# openssl req \

-newkey rsa:4096 -nodes -sha256 -keyout
reg.liuchang.com.key \

-out reg.liuchang.com.csr

Generating a 4096 bit RSA private
key

..............................................................................................................................................................................................

......................................++............................................................................................................................................................++

writing new private key to
'reg.liuchang.com.key'

-----

You are about to be asked to enter information that
will be incorporated

into your certificate request.

What you are about to enter is what is called a
Distinguished Name or a DN.

There are quite a few fields but you can leave some
blank

For some fields there will be a default
value,

If you enter '.', the field will be left
blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name)
[]:

Locality Name (eg, city) [Default
City]:

Organization Name (eg, company) [Default Company
Ltd]:

Organizational Unit Name (eg, section)
[]:

Common Name (eg, your name or your server's hostname)
[]:reg.liuchang.com

Email Address []:

Please enter the following 'extra'
attributes

to be sent with your certificate
request

A challenge password []:

An optional company name []:

[root@slavenode1 ssl]# ls

ca.crt  ca.key  reg.liuchang.com.csr  reg.liuchang.com.key

4.3、生成注册表主机的证书

[root@slavenode1 ssl]# openssl x509 -req -days 36500
\

-in reg.liuchang.com.csr \

-CA ca.crt -CAkey ca.key -CAcreateserial
\

-out reg.liuchang.com.crt

Signature ok

subject=/C=CN/L=Default City/O=Default Company
Ltd/CN=reg.liuchang.com

Getting CA Private Key

[root@slavenode1 ssl]# ls

ca.crt  ca.key  ca.srl  reg.liuchang.com.crt  reg.liuchang.com.csr  reg.liuchang.com.key

说明:reg.liuchang.com.crt 和 reg.liuchang.com.key 这两个证书是harbor所需要的。

5、Harbor安装与配置

# 解压harbor安装包

[root@slavenode1 ssl]# mkdir -p
/tools/

[root@slavenode1 ssl]# cd /tools/

[root@slavenode1 tools]# tar -xzf
harbor-offline-installer-v2.0.1.tgz -C /usr/local/

# 将上面生成的证书拷贝到harbor目录下

[root@slavenode1 tools]# cd
/usr/local/harbor/

[root@slavenode1 harbor]# mkdir -p
ssl/

[root@slavenode1 harbor]# cp -a
/root/ssl/reg.liuchang.com.crt ssl/

[root@slavenode1 harbor]# cp -a
/root/ssl/reg.liuchang.com.key ssl/

[root@slavenode1 harbor]# ls ssl/

reg.liuchang.com.crt  reg.liuchang.com.key

# 配置harbor

[root@slavenode1 harbor]# cp -a harbor.yml.tmpl
harbor.yml

[root@slavenode1 harbor]# vim harbor.yml  # 需要修改的内容如下

hostname: reg.liuchang.com  # 被访问的域名或ip地址

certificate: /usr/local/harbor/ssl/reg.liuchang.com.crt  # 证书地址

private_key:
/usr/local/harbor/ssl/reg.liuchang.com.key

harbor_admin_password: Harbor12345  # 访问harbor的密码,默认用户是admin

说明:默认
harbor的80和443
端口都对外开放,如果配置了ssl 证书后,访问harbor的

80
端口也会被重定向到443
端口的访问。

# 初始化、安装harbor

[root@slavenode1 harbor]# ./prepare

[root@slavenode1 harbor]#
./install.sh

# 通过docker-compose查看安装的harbor镜像

[root@slavenode1 harbor]# docker-compose
images

# 通过docker-compose查看所有harbor容器的运行状态

[root@slavenode1 harbor]# docker-compose ps
-a

6、Docker主机访问Harbor

6.1、通过浏览器访问harbor

# 修改本地主机的hosts 文件

C:\Windows\System32\drivers\etc\hosts

172.16.1.71 reg.liuchang.com  #
添加这条域名解析记录

# 访问 reg.liuchang.com

# 查看证书

# 登录

# 主页面

6.2、新建用户

6.3、新建项目

项目访问级别说明:

公开:用户不需要登录到docker镜像仓库,就可以拉取项目中的镜像,但不能上传镜像,默认的libray项目就是公开的。

不公开:用户需要登录到docker镜像仓库后才能从项目中拉取镜像或上传镜像到项目中。

6.4、在test项目中添加用户

6.5、linux主机访问docker仓库

1、将镜像仓库上的reg.liuchang.com.crt
文件拉到本地

因为镜像仓库设置了ssl证书,浏览器访问时可以自动将docker仓库上的证书拉下来,然后对数据进行加密和解密的交互,而使用linux主机访问时无法做到。

[root@controlnode ~]# mkdir
/etc/docker/certs.d/reg.liuchang.com -p

[root@controlnode ~]# scp -rp
root@172.16.1.71:/usr/local/harbor/ssl/reg.liuchang.com.crt
/etc/docker/certs.d/reg.liuchang.com

[root@controlnode ~]# ls
/etc/docker/certs.d/

reg.liuchang.com

2、修改本地hosts域名解析文件,添加如下内容

[root@controlnode ~]# echo "172.16.1.71
reg.liuchang.com" >>/etc/hosts

3、登录到镜像仓库

[root@controlnode ~]# docker login -uliuchang
-pLiuChang@2020 reg.liuchang.com

4、上传镜像

# 可以参考项目中的推送命令

# 打标签

[root@controlnode ~]# docker image
list

docker tag SOURCE_IMAGE[:TAG]
reg.liuchang.com/test/REPOSITORY[:TAG]

[root@controlnode ~]# docker tag tomcat:v1 reg.liuchang.com/test/tomcat:v1

说明:tomcat:v1
表示需要打标签的源镜像名称:标签名称。

reg.liuchang.com/test/tomcat:v1 表示打标签后的镜像名称:标签名称;

reg.liuchang.com 表示镜像仓库的地址;

test 表示项目名称;tomcat:v1
表示镜像名称:标签。

[root@controlnode ~]# docker
image list

# 上传镜像

docker push
reg.liuchang.com/test/REPOSITORY[:TAG]

[root@controlnode ~]# docker push
reg.liuchang.com/test/tomcat:v1

# 在镜像仓库中查看

5、拉取镜像

[root@controlnode ~]# docker pull
reg.liuchang.com/test/tomcat:v1

7、补充:

7.1、harbor服务器重启后有些容器无法启动的解决办法

[root@slavenode1 harbor]# docker container start
$(docker container list -a -q)

Harbor镜像仓库的更多相关文章

  1. harbor镜像仓库-02-https访问配置

    harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...

  2. harbor镜像仓库-01-搭建部署

    harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...

  3. CentOS部署Harbor镜像仓库

    关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全.标识.管理等方面做了增强,更适合企业使用: 官方网站:https: ...

  4. harbor镜像仓库-https访问配置

    1. 证书的生成 在测试或开发环境中,您可以选择使用自签名证书,而不是来自受信任的第三方CA的证书.以下内容将向您展示如何创建自己的CA,并使用您的CA签署服务器证书和客户端证书.   1.1 生成c ...

  5. 企业级 Harbor 镜像仓库

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

  6. docker登录没有配置https的harbor镜像仓库

    已经搭建harbor 仓库 ,域名  172.16.1.99 出现问题: 客户端尝试登录 仓库 [root@localhost docker]# docker login 172.16.1.99:80 ...

  7. Docker: 企业级镜像仓库Harbor的使用

    上一节,演示了Harbor的安装部署 这次我们来讲解 Harbor的使用. 我们需要了解到: 1. 如何推镜像到镜像仓库 2. 如何从镜像仓库拉取镜像 3. 如何运行从私有仓库拉取的镜像 # 查看 h ...

  8. Docker镜像仓库Harbor搭建及配置

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

  9. 03: 使用docker搭建Harbor私有镜像仓库

    1.1 harbor介绍 1.Harbor简介 1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 2. 镜像的存储harbor使用的是官方的docker regi ...

随机推荐

  1. 烽火SATA SSD DSS200-B

    烽火SATA SSD DSS200-B 运营商用户 > 产品与解决方案 > 产品 烽火SATA SSD DSS200-B 烽火通信 DSS200-B 2.5" SATA SSD ...

  2. 如何在CentOS 7上安装Htop

    在本教程中,我们将向您介绍如何在CentOS 7服务器上安装和配置Htop.对于那些不知道的人,Htop 是为Linux编写的一个交互式实时系统监视进程查看器.它被设计为替代Unix程序的顶部.它显示 ...

  3. 基于端口划分vlan

    基于端口划分vlan 拓扑图 PC ip 配置 PC 5:192.168.1.5 PC 6:192.168.1.6 PC 7:192.168.1.7 PC 8: 192.168.1.8 交换机配置 创 ...

  4. jmeter完成一个简单的性能测试(jp@gc - PerfMon Metrics Collector的运用)

    场景:公司项目解耦,在项目前期对新的架构进行简单的性能测试 工具:jmeter 1.大致结构如下: 1800秒(半个小时)内持续产生20000的线程 创建了聚合报告,主要是查看服务器响应结果以及相应时 ...

  5. Lua中的基本函数库--(转自忧郁的加菲猫)

    基本函数库为Lua内置的函数库,不需要额外装载assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息 ...

  6. MyBatis 回顾 JDBC(一)

    引言 学过 Java 的童鞋都知道,在 Java 中只有 JDBC 可以访问数据库,但是只要使用过 JDBC 的同学肯定也感受到 JDBC 访问数据库的繁琐, 需要编写大量的代码,经历一系列的步骤. ...

  7. 9.4-6 kill & killall & pkill

    kill:终止进程 能够终止你希望停止的进程. kill 命令的参数选项及说明 -l    列出全部的信号名称 -p    指定kill命令只打印相关进程的进程号,而不发送任何信号 -s    指定要 ...

  8. 10.10 traceroute:追踪数据传输路由状况

    traceroute命令 用于显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况.默认数据包大小是60字节(IPv4)或80字节(IPv6),用户可另行设置.它与Windows下的trace ...

  9. 安装JDK 常见错误解决(Day_07)

    在cmd中输入java -version或者java 或出现以下错误: 原因一:可能是你的JDK装的时间比较早,导致环境变量中的Path(此电脑->右击属性->高级系统设置->环境变 ...

  10. 『动善时』JMeter基础 — 28、JMeter函数助手详解

    目录 1.函数助手介绍 2.函数助手中的函数分类 3.常用函数介绍 (1)__Random函数 (2)__counter函数 (3)__time函数 (4)__property函数 (5)__setP ...