私有化容器仓库Harbor

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 私有化容器仓库Harbor

自建镜像参考harbor

官网地址 https://github.com/goharbor/harbor/releases
参考地址 https://www.cnblogs.com/tianzhendengni/p/14071523.html

安装Docker-compose

1、安装
yum install -y docker-compose
2、查看版本
docker-compose --version

下载

1、下载地址
https://github.com/goharbor/harbor/releases
2、解压
tar -zxf harbor-offline-installer-v2.4.1.tgz -C /usr/local/

配置

1、mkdir -p /data/certs
   cd /data/certs

2、配置ssl
    参考地址 https://zhuanlan.zhihu.com/p/234918875
    root@eb7023:/data/certs>openssl genrsa -out ca.key 4096

    http://harbor23.com这里是我harbor仓库的域名,即harbor配置文件中hostname的值,也可以写ip
    root@eb7023:/data/certs>openssl req -x509 -new -nodes -sha512 -days 3650  -subj "/CN=harbor23.com"  -key ca.key  -out ca.crt
    root@eb7023:/data/certs>ll
    total 8
    -rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
    -rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key

    创建私钥
    root@eb7023:/data/certs>openssl genrsa -out server.key 4096

    生成证书签名请求
    root@eb7023:/data/certs>openssl req  -new -sha512  -subj "/CN=harbor23.com"  -key server.key  -out server.csr
    root@eb7023:/data/certs>ll
    total 16
    -rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
    -rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
    -rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
    -rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key

    生成harbor仓库主机的证书

    root@eb7023:/data/certs>

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor23.com
EOF

    root@eb7023:/data/certs>
    root@eb7023:/data/certs>ll
    total 20
    -rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
    -rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
    -rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
    -rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
    -rw-r--r-- 1 root root  231 Sep 11 14:48 v3.ext

    生成harbor仓库主机的证书
    root@eb7023:/data/certs>openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
    Signature ok
    subject=/CN=harbor23.com
    Getting CA Private Key
    root@eb7023:/data/certs>ll
    total 28
    -rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
    -rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
    -rw-r--r-- 1 root root   17 Sep 11 14:48 ca.srl
    -rw-r--r-- 1 root root 1830 Sep 11 14:48 server.crt
    -rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
    -rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
    -rw-r--r-- 1 root root  231 Sep 11 14:48 v3.ext

    到目前为止所有需要的证书文件就生成完毕了,下面需要一些配置

    下面要修改harbor的配置文件 修改以下配置项
    cd /usr/local/harbor/
    mv /usr/local/harbor/harbor.yml.tmpl harbor.yml
    root@eb7023:/data/certs>vim /usr/local/harbor/harbor.yml 
    hostname: harbor23.com
    https:
    port: 443
    certificate: /data/certs/server.crt
    private_key: /data/certs/server.key

    TODO 接下来就可重启以下harbor仓库了,注意这里要CD到harbor解压目录
    #导入配置
    ./prepare
    #安装
    ./install.sh
    ##停止当前运行的harbor
    docker-compose down -v
    ##后台运行的harbor
    docker-compose up -d


    为docker配置harbor认证
    将server证书cp到docker所在的机器固定目录中

    #笔者这里的certs.d是已经存在的,如果不存在需要mkdir
    mkdir -p /etc/docker/certs.d/harbor23.com     
    root@eb7023:/data/certs>ll
    total 28
    -rw-r--r-- 1 root root 1797 Sep 11 14:20 ca.crt
    -rw-r--r-- 1 root root 3243 Sep 11 14:18 ca.key
    -rw-r--r-- 1 root root   17 Sep 11 14:48 ca.srl
    -rw-r--r-- 1 root root 1830 Sep 11 14:48 server.crt
    -rw-r--r-- 1 root root 1590 Sep 11 14:24 server.csr
    -rw-r--r-- 1 root root 3243 Sep 11 14:20 server.key
    -rw-r--r-- 1 root root  231 Sep 11 14:48 v3.ext

    root@eb7023:/data/certs>cp server.crt  /etc/docker/certs.d/harbor23.com/server.crt
   
    这里我的docker和harbor是在同一台机器上的,如果是其他机器也复制crt文件即可
    root@eb7023:/data/certs>scp server.crt root@eb7045:/etc/docker/certs.d/harbor23.com/server.crt
    root@eb7045's password:
    server.crt                                    100% 1830     2.1MB/s   00:00

    如果是windows的话 C:\ProgramData\Docker\certs.d\harbor23.com 目录下放server.crt

    3 #重新查看证书过期日期(这次是十年)
    root@harbor:/data/harbor/certs# openssl x509 -in /data/harbor/certs/ca.crt -noout -dates
    
    4、需改/etc/hosts 将ip和域名添加起来(可能需要)

3、安装
cd /usr/local/harbor/
./install.sh

✔ ----Harbor has been installed and started successfully.----  (出现代表成功)

启动查看

必须保证docker-compose启动,不然可能出现 harbor 核心服务不可用
cd /usr/local/harbor
1、查看
docker-compose ps
2、启动关闭
docker-compose start
docker-compose stop
3、编写开机启动
echo "docker-compose start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

nginx扩展

可以加nginx反代
cat /etc/nginx/conf.d/harbor.conf
server {    
listen       80;
server_name  harbor.od.com;
# 避免出现上传失败的情况
client_max_body_size 1000m;
location / {
proxy_pass http://127.0.0.1:180;  #180是harbor的端口号
}
}

测试harbor

1、配置docker(那个docker的服务器有就在那个里加)
不加下面配置报错(Get "https://harbor23.com/v2/": dial tcp 192.168.0.2:443: connect: connection refused)

cat /etc/docker/daemon.json
{
"insecure-registries":["harbor23.com"]
}

systemctl daemon-reload
systemctl restart docker
2、先拉取一个nginx
docker pull nginx
3、加标签
docker tag nginx:latest harbor23.com/public/nginx:skv1    (标签是域名+项目名+镜像版本)
4、登录
docker login -u admin  http://harbor23.com  输入密码
5、推送
docker push harbor23.com/public/nginx:skv1
6、拉取
docker pull harbor23.com/public/nginx:skv1
7、推出登录
docker logout

外网访问

修改harbor所在的服务器docker配置

1、修改docker配置
vi /lib/systemd/system/docker.service
找到包含ExecStart的这行,添加如下内容:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 
2375端口为docker远程服务端口,包含了docker可视化工具portainer,以及远程上传镜像的功能。

2、vi /etc/docker/daemon.json 上面已经做了
# 添加harbor镜像地址
{
"insecure-registries": ["172.28.152.101"]
}

windows idea 访问 详情参考 https://blog.csdn.net/An1090239782/article/details/111316025

1、安装docker destop
2、如果是windows的话 C:\ProgramData\Docker\certs.d\harbor23.com 目录下放server.crt证书
3、修改C:\Windows\System32\drivers\etc\hosts 指向harbor23.com域名
4、配置docker destop setting 修改 docker engine 配置增加
    "insecure-registries": [
        "harbor23.com"
    ],

docker-desktop配置

微信公众号,需要的话就关注下我~

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
6月前
|
存储 Kubernetes 持续交付
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
130 0
|
Linux Docker 容器
|
Cloud Native Java 应用服务中间件
Docker容器实战【三】搭建Docker镜像私服Harbor
每个企业都有自己的镜像私服仓库,和nexus一样,公司内部的镜像制品都存放在自己的私服仓库中,今天我们来学习Harbor
829 0
Docker容器实战【三】搭建Docker镜像私服Harbor
|
2月前
|
Java 测试技术 Maven
云效问题之构建docker镜像从容器仓库拉取镜像报错如何解决
云效镜像是指存储在阿里云效服务中的容器镜像,它们可以用于持续集成和持续部署(CI/CD)流程中;本合集将介绍如何在云效平台上管理和使用镜像资源,以及常见的镜像问题和解决办法。
68 0
|
4月前
|
安全 应用服务中间件 nginx
Docker基础概念解析:镜像、容器、仓库
当谈到容器化技术时,Docker往往是第一个被提及的工具。Docker的基础概念涵盖了镜像、容器和仓库,它们是理解和使用Docker的关键要素。在这篇文章中,将深入探讨这些概念,并提供更丰富的示例代码,帮助大家更好地理解和应用这些概念。
|
Docker 容器
阿里云容器镜像仓库
阿里云容器镜像仓库
1714 0
|
8月前
|
Kubernetes Docker 容器
容器云平台初始化(harbor的安装部署)(下)
容器云平台初始化(harbor的安装部署)(下)
166 0
|
8月前
|
网络安全 容器
容器云平台初始化(harbor的安装部署)(上)
容器云平台初始化(harbor的安装部署)(上)
87 0
|
10月前
|
存储 Ubuntu 安全
一文搞清楚 Docker 镜像、容器、仓库
Docker 镜像、容器、仓库是 Docker 技术中的三个重要概念.....
3054 1
一文搞清楚 Docker 镜像、容器、仓库
|
11月前
|
Kubernetes Cloud Native 容器
云原生之容器编排实践-minikube传递秘钥使用阿里云私有镜像仓库
云原生之容器编排实践-minikube传递秘钥使用阿里云私有镜像仓库
353 0