Habor安装

准备:

centos7、4G、2核、Docker, Docker-compose
安装包: harbor-offline-installer-v2.3.4.tgz
安装包地址: https://github.com/goharbor/harbor/releases
当前测试机器IP: 192.168.0.208
目录: /app/habor

开始安装部署

生成证书 (可以不用生成, 注释掉harbor.yml https 部分即可)

mkdir -p /data/harbor_ssl/

#生成根证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

#生成服务器秘钥
openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.hub.com.key -out reg.hub.com.csr

#生成服务器证书
openssl x509 -req -days 365 -in reg.hub.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.hub.com.crt

修改配置文件

vim harbor.yml

#需要修改的地方
#hostname: reg.hub.com
hostname: 192.168.0.205
http:
#    port: 80    #建议使用80端口
     port: 48080
#https:
#    port: 443
#    certificate: /data/harbor_ssl/reg.hub.com.crt
#    private_key: /data/harbor_ssl/reg.hub.com.key
harbor_admin_password: Harbor12345
data_volume: /data
log:
    level: info
    local:
        rotate_count: 50
        rotate_size: 200M
        location: /var/log/harbor

https:如果要启动https还需要配置ssl证书, 不需要则注释掉

执行安装脚本

./prepare

./install.sh

若报错:

ERROR:root:Error: The protocol is https but attribute ssl_cert is not set
Error happened in config validation...

原因是harbor.yml中默认是配置https的端口及证书路径的。解决办法是把这些配置都注释掉。再次执行

# https related config
#https:
  # https port for harbor, default is 443
 # port: 443
  # The path of cert and key files for nginx
 # certificate: /your/certificate/path
 # private_key: /your/private/key/path

若报错:
✖ Need to upgrade docker package to 17.06.0+. 需要升级docker

rpm -qa | grep docker  #列出包含docker字段的软件的信息
# docker-1.13.1-161.git64e9980.el7_8.x86_64
# docker-common-1.13.1-161.git64e9980.el7_8.x86_64
# docker-client-1.13.1-161.git64e9980.el7_8.x86_64
yum remove docker-*  #移除上面显示的软件包

使用curl 安装docker最新版本 , 再执行 ./install

curl -fsSL https://get.docker.com/ | sh
systemctl restart docker  #重启docker
systemctl enable docker   #设置开机启动

安装成功:

...
[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating redis         ... done
Creating harbor-db     ... done
Creating harbor-portal ... done
Creating registry      ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----

访问地址: http://192.168.0.205:48080/account/sign-in?redirect_url=%2Fharbor%2Fprojects

配置harbor的https访问

注意:我们搭建的仓库是http访问的,docker CLI默认以HTTPS 访问仓库,所以要先配置可信任,否则pull镜像仓库失败。如果是HTTPS提供服务就不用配置

  1. 首先访问/etc
vim hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 reg.hub.com
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

2.配置https (打开注释掉的部分), 然后重启

./prepare

./install.sh

3.配置镜像,修改/etc/docker/daemon.json

vim /etc/docker/daemon.json
 
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "insecure-registries": ["reg.hub.com","reg2.hub.com"]
}

registry-mirrors:镜像地址,insecure-registries:非https访问的仓库地址

4.测试 给镜像打tag并且push到harbor仓库

docker pull nginx:1.18

docker image tag nginx:1.18 reg.hub.com:48080/library/nginx:1.18
 
docker push reg.hub.com:48080/library/nginx:1.18

# 建议独立一台服务器 用80 或者443 端口, 即不用带端口号

若出现错误, 后发现push 功能不可用:

unauthorized: unauthorized to access repository: library/nginx, action: push: unauthorized to access repository: library/nginx, action: push

查找配置文件

[root@win21 ~]# find / -name config.json
。。。
/root/.docker/config.json
/var/lib/pcp/pmdas/json/config.json

发现/root/.docker/config.json 中设在为IP地址而在daemon.json 设的为主机名,更改为同样设置,再次尝试

[root@win21 .docker]# cat config.json
{
    "auths": {
        "reg.hub.com:48080": {
            "auth": "YWRtaW46SGFyYm9yMTIzNDU="
        }
    }
}
[root@win21 .docker]# cat /etc/docker/daemon.json 
{
"insecure-registries":["reg.hub.com"]
}

从Harbor 仓库拉去镜像 (其他服务器设备)

在其他设备用docker login ... 登录Harbor 服务器时,报下面错误:

Error response from daemon: Get https: x509: certificate signed by unknown authority

默认时,client 与 Registry 的交互是通过 https 通信的。在 install Registry 时,若未配置任何tls 相关的 key 和 crt 文件,https 访问必然失败。使用 "–insecure-registry "可以指定 client 与 Registry 以 http 的方式进行通信。

  1. 修改 /lib/systemd/system/docker.service 文件里的 ExecStart= 行:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.0.205
  1. 重载、重启 docker 服务,验证配置是否生效
systemctl daemon-reload
systemctl restart docker
docker info

可以看到,注册地址了, 然后可以接登录

Insecure Registries:
 192.168.0.205
 127.0.0.0/8

3.拉取镜像:

docker pull 192.168.0.205/library/nginx:1.18

Habor的启停

cd /app/habor
docker-compose stop
docker-compose start

备注:执行docker-compose的时候,需要使用 -f /path-to-docker-compose/docker-compose.yml 参数指定docker-compose.yml文件的位置,或者切换到docker-compose.yml文件所在的目录下,再执行。

docker-compose的一些基本操作

#列出所有运行容器
docker-compose ps

#查看服务日志输出
docker-compose logs

#打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
docker-compose port eureka 8761

#构建或者重新构建服务
docker-compose build

#启动指定服务已存在的容器
docker-compose start eureka

#停止已运行的服务的容器
docker-compose stop eureka

#删除指定服务的容器
docker-compose rm eureka

#构建、启动容器
docker-compose up

#通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose kill eureka

#设置指定服务运行容器的个数,以 service=num 形式指定
docker-compose scale user=3 movie=3

#在一个服务上执行一个命令
docker-compose run web bash

开启Docker Remote API

在/usr/lib/systemd/system/docker.service,配置远程访问。
主要是在[Service]这个部分,加上下面两个参数 : -H tcp://0.0.0.0:2375

重启:

systemctl daemon-reload
systemctl restart docker
posted @ 2021-12-09 15:14  栋_RevoL  阅读(512)  评论(0编辑  收藏  举报