云原生必备工具!手把手教你搭建Harbor私有仓库(上)
2023-12-27 22:51:54
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 ,成功后如下图:
编写自己的镜像
- 创建go语言项目
mkdir goweb
cd goweb
go mod init goweb
- 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")
}
- 执行
go mod tidy
下载依赖 - 编写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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!