美文网首页Docker
docker离线安装harbor

docker离线安装harbor

作者: FyK_21f8 | 来源:发表于2021-04-17 05:02 被阅读0次

ps:安装Harbor需要docker环境,配置https需要openssl

1 获取Harbor离线安装包

通过github获取离线安装包,地址:https://github.com/goharbor/harbor/releases,可以根据自己的需要下载自己需要的release版本,这里使用的是v2.2.1,下载对应的离线安装包harbor-offline-installer-v2.2.1.tgz

image.png

2 下载docker-compose

前往github下载docker-compose,地址:https://github.com/docker/compose/releases,根据自己的docker版本选择对应的release版本,这里安装的是1.29.1

image.png

3 安装docker-compose

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

# 执行权限
chmod +x /usr/local/bin/docker-compose

# 检查是否安装成功,输出版本号表示安装成功
docker-compose - v

4 安装Harbor

mkdir -p /apps
cd /apps
# 上传包

# 解压
tar -zxvf harbor-offline-installer-v2.2.1.tgz

# 复制一份配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml

# 编辑配置文件
vim harbor.yml

主要编辑配置文件的以下内容

# 修改成你的ip
hostname: 192.168.211.99

# 修改端口号
http:
  port: 880

# 如果不需要https,请注释掉https相关
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

# 配置密码,将 Harbor12345换成你自己的密码
harbor_admin_password: Harbor12345

启动harbor

./install.sh

可以通过docker ps查看各个组件是否启动完成,启动完成后,就可以通过你配置的IP + PORT访问Harbor了,这里有个小坑,因为harbor本身依赖redis和nginx,如果你本机已经跑着名称为nginx和redis的容器,启动会报错,需要先将自己的redis或者nginx容器重命名才能启动成功。如果不需要开启https的话,可以宣布游戏结束了。

5 Harbor常用命令

# 启动harbor
docker-compose up -d

# 关闭harbor
docker-compose down

6 配置https

因为Harbor要配合Rancher一起使用,rancher访问Harbor只支持https,所以要重新配置一下。

6.1 修改openss的配置

关键点:制作证书前需要设置openss的配置文件,在[ v3_ca ] 下添加subjectAltName = IP:192.168.211.99,否则做出来的证书使用docker登录会报:x509: cannot validate certificate for 192.168.211.99 because it doesn't contain any IP SANs 错误。这里192.168.211.99需要替换成harbor所在机器的ip

vim /etc/pki/tls/openssl.cnf

[ v3_ca ]下添加以下内容,ip替换成harbor机器所在ip

subjectAltName = IP:192.168.211.99

6.2 制作证书

生成CA证书私钥和CA证书

# 切换到harbor证书所在的目录,可以自己创建目录,和后面配置对上就好
mkdir -p /apps/harbor/cert
cd /apps/harbor/cert

# 执行证书命令
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 3650 -out ca.crt \
-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=NETSION/OU=IT/CN=192.168.211.99/emailAddress=xxxx@xxx.com"

说明:C=CN(国家),ST=Guangdong(省份),L=Shenzhen(城市),O=NETSION(公司),OU=IT(部门),CN=192.168.211.99(IP,harbor的ip),emailAddress=XXX@XXX.com(换成你自己的邮箱,或者随便填)
执行完后,会得到两个文件ca.crtca.key

生成服务器证书

# 私钥
openssl genrsa -out 192.168.211.99.key 4096

openssl req -sha512 -new -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=NETSION/OU=IT/CN=192.168.211.99/emailAddress=xxxx@xxxx.com" -key 192.168.211.99.key -out 192.168.211.99.csr

生成一个使用ip进行访问的x509 v3扩展文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.211.99
EOF

使用刚才生成的v3.ext生成Harbor主机证书

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 192.168.211.99.csr \
    -out 192.168.211.99.crt

转换192.168.211.99.crt192.168.211.99.cert,供Docker使用,Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书

openssl x509 -inform PEM -in 192.168.211.99.crt -out 192.168.211.99.cert

到这里我们已经生成了一村证书了

[root@localhost cert]# ls
192.168.211.99.cert  192.168.211.99.crt  192.168.211.99.csr  192.168.211.99.key  ca.crt  ca.key  ca.srl  v3.ext

6.3 使用证书

# 编辑配置文件
cd /apps/harbor
vim harbor.yml

主要修改以下内容,端口默认443,certificate和private_key替换成你自己的证书路径

# 放开之前注释掉的https部分,并修改其内容
https:
  # https port for harbor, default is 443
  port: 8443
  # The path of cert and key files for nginx
  certificate: /apps/harbor/cert/192.168.211.99.crt
  private_key: /apps/harbor/cert/192.168.211.99.key

将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中

mkdir -p /etc/docker/certs.d/192.168.211.99:8843
cp 192.168.211.99.cert 192.168.211.99.key ca.crt /etc/docker/certs.d/192.168.211.99:8843

这里文件夹的命名是有规则限定的,/etc/docker/certs.d/yourdomain.com:port/etc/docker/certs.d/harbor_IP:portyourdomain.comharbor_IP根据自己的情况填写harbor域名或者ip,因为我这里使用的时ip访问,所以配置的是ip,port为你配置的https端口,如果是默认的443可以不填写端口,如果你使用的是非默认值,文件夹名称请加上端口号且需要和harbor.yml配置的https端口对应上

6.4 重启docker与harbor

# 关闭harbor
docker-compose down -v

# 重启docker
service docker restart

# 重新配置
./prepare

# 启动
./install.sh

ps:我看到网上有些教程在执行./prepare之后直接docker-compose -d就可以了。但是我发现我执行的时候报错了,docker ps -a发现之前相关的容器全部没有了,所以就直接在./install了一次

6.5 验证https

页面访问我们的http端口880,发现已经可以自动跳转到https端口8443了

image.png
使用admin,密码使用之前在配置文件中配置的密码,默认Harbor12345,登录成功后便看到了harbor清爽的界面
image.png

7 本机docker推送镜像到harbor中

# 随后输入密码
docker login https://192.168.211.99:8443 -u admin

# 拉一个镜像
docker pull mongo

# tag镜像
docker tag mongo:latest 192.168.211.99:8443/library/mongo:latest

# 推送镜像
docker psuh 192.168.211.99:8443/library/mongo:latest

镜像已经推入harbor中


image.png

8 其他机器推送镜像到harbor中

因为我们的证书是自己制作的,所以要将CA证书发送到其他机器上添加信任,我自己harbor所在的机器ip为192.168.211.99,演示在192.168.211.100机器上配置信任
在Harbor机器上的操作

cd /apps/harbor/cert

# 发送
scp ca.crt root@192.168.211.100:/home

192.168.211.100另外机器上的操作

# 切换scp过来的目录
cd /home

# 创建证书文件夹,命名规则和上面介绍的一样
mkdir -p /etc/docker/certs.d/192.168.211.99:8443/

# 添加证书
mv ca.crt /etc/docker/certs.d/192.168.211.99:8443/

# 登录docker
docker login https://192.168.211.99:8443 -u admin

# pull我们刚才推送上去的镜像
docker pull 192.168.211.99:8443/library/mongo:latest

如果登录的时候出现以下报错,则是时间不同步问题,导致证书失效

Error response from daemon: Get https://192.168.211.99/v2/: x509: certificate has expired or is not yet valid

参考文档:https://www.cnblogs.com/cjwnb/p/13441071.html

相关文章

  • docker离线安装harbor

    ps:安装Harbor需要docker环境,配置https需要openssl 1 获取Harbor离线安装包 通过...

  • Harbor部署

    一、Docker-compose部署 二、Harbor部署 1、下载Harbor安装文件 选择离线安装,下载off...

  • Vmware的容器仓库harbor

    准备 Harbor离线包(速度快) Docker-compose 证书,如果使用https 开始 安装Docker...

  • docker部署harbor

    harbor部署 先安装docker以及docker-compose 下载离线包,建议获取最新版本 https:/...

  • docker仓库 harbor

    docker仓库 Harbor 修改docker仓库地址 安装docker-compose 下载harbor 修改...

  • harbor

    更新yum源 升级docker 安装docker-compose 安装harbor 修改vim harbor.ym...

  • docker harbor

    下载 harbor harbor 中已经含有了 docker registry ,因此,无需再安装 docker ...

  • Centos下docker离线安装

    Centos下docker离线安装 1、下载docker安装文件 离线安装docker,需要下载docker的安装...

  • 安装harbor1.6 企业级镜像仓库

    harbor 1.6 安装 环境 docker-composer download harbor 选择在线安装方式...

  • Harbor 搭建

    搭建Harbor 1.前置条件,安装docker 2.安装docker-compose 3.harbor搭建和启动...

网友评论

    本文标题:docker离线安装harbor

    本文链接:https://www.haomeiwen.com/subject/yvtulltx.html