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。
配置 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
Trivy 漏扫
用户管理
上一条:Docker共享宿主机文件,减小镜像体积
下一条:如何加快docker镜像的下载速度?