云原生必备工具!手把手教你搭建Harbor私有仓库(上)

发布时间:2023年12月28日

Harbor简介

Harbor是一个开源的企业级容器镜像仓库管理系统,旨在提供安全、可信赖的容器镜像管理解决方案。它由VMware公司开发并贡献给CNCF(云原生计算基金会)进行维护。

Harbor提供了一系列功能来帮助用户管理和存储容器镜像,包括:

  • 镜像仓库管理:Harbor允许用户创建和管理多个私有容器镜像仓库,用户可以通过web界面或API进行仓库管理操作。
  • 安全性和权限管理:Harbor支持用户认证和授权机制,可以通过集成LDAP、Active Directory等身份认证系统来实现用户身份验证,并提供细粒度的权限控制,确保只有授权用户可以访问和管理镜像。
  • 审计和日志记录:Harbor提供了审计功能,可以记录用户对仓库的操作和活动日志,方便进行安全审计和故障排查。
  • 镜像复制和同步:Harbor支持镜像的复制和同步功能,可以将镜像从一个仓库复制到另一个仓库,实现跨不同环境的镜像分发和同步。
  • 容器镜像扫描:Harbor内置了容器镜像漏洞扫描工具,可以对镜像进行漏洞扫描和安全性检查,帮助用户及早发现和修复潜在的安全风险。
  • 集成和扩展性:Harbor可以与其他工具和平台进行集成,如Kubernetes、Docker、Jenkins等,可以通过插件机制扩展功能,满足用户的特定需求。

总之,Harbor是一个功能强大、安全可靠的容器镜像仓库管理系统,适用于企业级容器化环境,为用户提供了完善的容器镜像管理解决方案。

下载

没有科学🪜上网工具,下载速度可能会比较慢

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

下载解压后,将harbor.yml 中的hostname修改成localhost 并且注释https部分,以防不知名bug产生。harbor.yml 可cp harbor.yml.tmpl harbor.yml得到

hostname: localhost

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# 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

然后执行 ./install.sh ,成功后如下图:

编写自己的镜像

  1. 创建go语言项目
mkdir goweb
cd goweb
go mod init goweb
  1. vim main.go
package main
import "github.com/gin-gonic/gin"
func main() {

	g := gin.Default()
	g.Routes()
	g.GET("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{
			"message": "hello",
		})
	})
	g.Run(":8081")

}
  1. 执行 go mod tidy下载依赖
  2. 编写dockerfile 打包成镜像

注意:Dockerfile中使用的golang版本可以查看自己电脑go version

# 在goland环境下对链程序进行编译
FROM golang:1.21.5 as builder
LABEL authors="yunyuanshengzhinan"
# 将当前目录添加到容器
ADD . /goweb
RUN go env -w GOPROXY=https://goproxy.cn,direct && cd /goweb  &&  go build ./main.go

# 完成编译后,将编译成功的二进制文件copy到新的容器当中,减小容器的大小
FROM alpine:latest

RUN mkdir -p /goweb
COPY --from=builder /goweb/main          /bin/main
EXPOSE     8081
WORKDIR    /goweb
ENTRYPOINT [ "/bin/main" ]

执行 docker build -t goweb:v0.1 .进行打包操作。

上传镜像到Habor

登陆Harbor

docker login localhost:80 -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

推送镜像到Harbor

重命名tag

be9874d47f6e 是我自己的,可以执行docker images进行查看

docker tag be9874d47f6e localhost/library/goweb:v0.1

推送

docker push localhost/library/goweb:v0.1

如果出现以下错误:

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

则重新进行登陆:docker login localhost -u admin -p Harbor12345。然后再继续执行docker push操作。

推送成功

未完待续…

下一期讲解,如何从harbor进行拉取。

关注微信公众号:云原生实战指南,带你学习更多云原生知识。

文章来源:https://blog.csdn.net/efheoihfe/article/details/135257027
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。