首页>软件资讯>常见问题

常见问题

Docker系列之 Harbor 仓库

发布时间:2024-06-26 11:25:22人气:228

Docker 系列之 Harbor 仓库

Harbor 是一个开源的企业级 Docker 容器镜像仓库,它扩展了 Docker Registry 的功能,提供了更高级的特性和管理功能。

Harbor 由 VMware 开发并捐赠给 CNCF(Cloud Native Computing Foundation)。


Harbor 的主要功能和特性

角色访问控制: 提供基于角色的访问控制(RBAC),可以对不同的用户和用户组设置不同的访问权限,确保只有授权用户才能访问和操作镜像。


镜像复制: 支持在多个 Harbor 实例之间的镜像复制,可以将镜像从一个 Harbor 实例复制到另一个实例,实现高可用性和灾备。


审计日志: 提供详细的审计日志,记录用户的所有操作,方便追踪和审计。


镜像签名和安全扫描: 支持 Notary 镜像签名和 Clair 安全扫描,确保镜像的完整性和安全性。


图形化界面: 提供友好的 Web UI,用户可以通过图形化界面方便地管理和操作镜像。


LDAP/AD 集成:支持与 LDAP/Active Directory 集成,方便企业用户管理和认证。


多租户支持: 支持项目隔离和多租户管理,可以在一个 Harbor 实例中管理多个项目,每个项目可以有独立的用户和权限。


RESTful API: 提供丰富的 RESTful API,方便与其他系统集成和自动化操作。


Harbor 单机实践

本次实践使用一台服务器,IP 地址为 10.0.0.14


安装依赖

[root@harbor01 ~]# curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@harbor01 ~]# yum install docker-compose docker-ce -y

[root@harbor01 ~]# systemctl start docker

[root@harbor01 ~]# systemctl enable docker

下载 Harbor 离线安装包

[root@harbor01 ~]# wget wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz

[root@harbor01 ~]# tar xf  harbor-offline-installer-v2.11.0.tgz

[root@harbor01 ~]# cd harbor

[root@harbor01 harbor]# ll

总用量648524

-rw-r--r--.1 root root      36466月418:41 common.sh

-rw-r--r--.1 root root 6640467666月418:41 harbor.v2.11.0.tar.gz

-rw-r--r--.1 root root     142706月418:41 harbor.yml.tmpl

-rwxr-xr-x.1 root root      19756月418:41 install.sh

-rw-r--r--.1 root root     113476月418:41 LICENSE

-rwxr-xr-x.1 root root      18826月418:41 prepare

修改配置文件

[[root@harbor01 ~]# cp harbor.yml.tmpl  harbor.yml

[root@harbor01 ~]# vim harbor.yml

# 修改主机名称

5 hostname:10.0.0.14

6

7# http related config

8 http:

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

10   port:80

11# 禁用https

12# https related config

13#https:

14#  # https port for harbor, default is 443

15#  port: 443

16#  # The path of cert and key files for nginx

17#  certificate: /your/certificate/path

18 #  private_key: /your/private/key/path

启动

# 该脚本会自动拉取所需的 Docker 镜像并启动 Harbor 服务。

[[root@harbor01 harbor]# ./install.sh

[+]Running10/10

✔Network harbor_harbor        Created0.2s

✔Container harbor-log         Started0.1s

✔Container redis              Started0.1s

✔Container registryctl        Started0.0s

✔Container harbor-db          Started0.1s

✔Container registry           Started0.1s

✔Container harbor-portal      Started0.1s

✔Container harbor-core        Started0.1s

✔Container harbor-jobservice  Started0.0s

✔Container nginx              Started0.0s

✔----Harbor has been installed and started successfully.----

查看启动状态

[root@harbor01 harbor]# docker-compose ps

NameCommandStatePorts

-------------------------------------------------------------------------------------------------

harbor-core         /harbor/entrypoint.sh            Up

harbor-db           /docker-entrypoint.sh  13Up

harbor-jobservice   /harbor/entrypoint.sh            Up

harbor-log          /bin/sh -c /usr/local/bin/...Up127.0.0.1:1514->10514/tcp           

harbor-portal       nginx -g daemon off;Up

nginx               nginx -g daemon off;Up0.0.0.0:80->8080/tcp,:::80->8080/tcp

redis               redis-server /etc/redis.conf     Up

registry            /home/harbor/entrypoint.sh       Up

registryctl         /home/harbor/start.sh            Up                                          

浏览器访问验证

在浏览器中访问 http://yourdomain.com

默认的管理员用户名是 admin

默认的管理员密码为 Harbor12345。

访问后页面.png

配置 Docker 信任 Harbor 仓库

[root@harbor01 harbor]# vim /etc/docker/daemon.json

{

 "insecure-registries": ["10.0.0.14"]

}


# 重启 docker 服务

[root@harbor01 harbor]# systemctl restart docker

镜像推送拉取测试

# 登录 Harbor

[root@harbor01 harbor]# docker login 10.0.0.14

Username: admin

Password:Harbor12345

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


LoginSucceeded


# 将本地镜像打标签,进行推送拉取测试

[root@harbor01 harbor]# docker tag  alpine:latest 10.0.0.14/library/alpine:latest


# 推送测试

[root@harbor01 harbor]# docker push 10.0.0.14/library/alpine:latest 

The push refers to repository [10.0.0.14/library/alpine]

1bfeebd65323:Pushed

latest: digest: sha256:57334c50959f26ce1ee025d08f136c2292c128f84e7b229d1b0da5dac89e9866 size:528


# 拉取测试

[root@harbor01 harbor]# docker pull 10.0.0.14/library/alpine:latest

latest:Pulling from library/alpine

Digest: sha256:57334c50959f26ce1ee025d08f136c2292c128f84e7b229d1b0da5dac89e9866

Status:Image is up to datefor10.0.0.14/library/alpine:latest

10.0.0.14/library/alpine:latest

1.png

Trivy 漏扫

Trivy 漏扫.png

用户管理



上一条:Docker共享宿主机文件,减小镜像体积

下一条:如何加快docker镜像的下载速度?