Docker 私有仓库是一个用于存储和管理 Docker 镜像的私有存储库。它允许你在内部网络中创建和管理 Docker 镜像,并提供了更好的安全性和控制,因为你可以完全控制谁能够访问和下载你的镜像。
以下是 Docker 私有仓库的一些重要特点和详细介绍:
镜像存储和管理:Docker 私有仓库允许你在仓库中存储和管理 Docker 镜像。你可以将自己创建的镜像或从其他来源拉取的镜像上传到私有仓库,以备将来使用。
安全性和隐私:私有仓库提供了更好的安全性和隐私控制。你可以限制对仓库的访问权限,只允许授权用户或团队访问其中的镜像。这对于企业或组织内部使用 Docker 镜像非常重要,可以防止未经授权的访问和滥用。
高可用性:许多 Docker 私有仓库支持高可用性设置,可以通过多个节点复制和备份镜像来保证仓库的稳定性和可用性。
用户身份验证:私有仓库通常支持多种用户身份验证方式,例如基本身份验证、OAuth、LDAP 等。这些机制可以帮助你验证用户身份并确保只有授权用户才能访问仓库。
镜像版本控制:私有仓库通常支持对镜像版本的管理,你可以上传和保存不同版本的镜像,并轻松回滚到先前的版本。
加速器:私有仓库可以作为一个本地的镜像加速器,可以显著提高 Docker 镜像的拉取速度。当你在内部网络中部署私有仓库时,它可以减少从公共 Docker Hub 下载镜像的网络延迟。
客户端支持:Docker 客户端原生地支持私有仓库。你可以像操作公共 Docker Hub 一样操作私有仓库,只需在镜像名称前加上仓库的地址,如 private-registry.example.com/my-image:latest
。
存储限制:私有仓库可以设置存储限制,以限制用户上传的镜像大小和总存储空间使用量。
常见的 Docker 私有仓库解决方案包括:
使用 Docker 私有仓库可以为企业或组织内部的 Docker 镜像管理提供更好的控制和灵活性。它允许你按照自己的需求和政策管理 Docker 镜像,并确保镜像的安全性和可用性。
Harbor 是一个开源的企业级 Docker 镜像仓库和运维工具,由 VMware 发起并维护。它旨在提供一个安全、可靠、易于管理的 Docker 镜像存储和管理解决方案。Harbor 支持大规模的 Docker 镜像仓库,适用于企业或组织内部使用,提供了高级的安全性、权限管理和多种存储后端选项。
以下是 Harbor 的一些主要特点和详细介绍:
Docker 镜像存储和管理:Harbor 允许你在内部网络中存储和管理 Docker 镜像。你可以将自己创建的 Docker 镜像或从其他来源拉取的镜像上传到 Harbor 中,以备将来使用。
多租户和权限管理:Harbor 支持多租户架构,可以为不同的用户或团队提供独立的项目和命名空间。你可以通过灵活的权限管理来控制用户对镜像仓库的访问权限。
安全性:Harbor 提供了多种安全特性,包括用户身份验证和授权、镜像签名验证、防止恶意代码注入等,以确保仓库中的镜像安全可信。
镜像复制和同步:Harbor 支持在多个 Harbor 实例之间复制和同步镜像,可以轻松实现跨地域或跨数据中心的镜像分发和备份。
高可用性:Harbor 可以部署为多节点集群,提供高可用性设置,保证仓库的稳定性和可用性。
存储后端支持:Harbor 支持多种存储后端选项,包括本地文件系统、S3、阿里云 OSS、Azure Blob 存储等。你可以根据需求选择适合的存储后端。
镜像拉取加速:Harbor 可以作为本地的 Docker 镜像加速器,显著提高 Docker 镜像的拉取速度。当你在内部网络中部署 Harbor 时,它可以减少从公共 Docker Hub 下载镜像的网络延迟。
企业级运维工具:除了 Docker 镜像仓库功能,Harbor 还提供了一些企业级运维工具,如镜像复制、镜像标记、垃圾回收等,帮助你更好地管理镜像。
容器镜像漏洞扫描:Harbor 集成了容器镜像漏洞扫描工具,可以对上传到仓库的镜像进行安全扫描,发现和修复可能存在的漏洞。
日志和审计:Harbor 记录了用户的操作日志和审计信息,帮助你了解仓库的使用情况,并跟踪用户的操作历史。
灵活的配置:Harbor 提供了丰富的配置选项,允许你根据自己的需求调整仓库的行为和性能。
Harbor 是一个功能强大的 Docker 镜像仓库和运维工具,适用于企业或组织内部的 Docker 镜像管理。它提供了高级的安全性和权限管理功能,帮助用户实现对 Docker 镜像的完全控制,并确保镜像的安全可信。
下载harbor源码
https://github.com/goharbor/harbor #官网
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
我这里没有使用到https使用这里进行了注释
Harbor采用docker-compose安装,所以我们首先安装docker-compose,将其放到/usr/bin
下
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
给可执行权限
chmod +x docker-compose
执行安装脚本
./install.sh
浏览去访问ip
账号:admin 密码:Harbor12345
[root@localhost harbor]# cat harbor.yml
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.2.99
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 8089
# 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
这里注释了https的内容,同时指定了
hostname:192.168.2.99
,指定了端口
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://yfge5xji.mirror.aliyuncs.com"],
"insecure-registries" : ["192.168.2.99:8089"] #根据yml文件进行添加
}
重启docker
systemctl daemon-reload
systemctl restart docker
登入仓库
[root@localhost harbor]# docker login 192.168.2.99:8089
Username: yan
Password:
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
mjh
仓库[root@localhost harbor]# docker tag hello-world:latest 192.168.2.99:8089/mjh/hello-world:1.0
[root@localhost harbor]# docker push 192.168.2.99:8089/mjh/hello-world:1.0
The push refers to repository [192.168.2.99:8089/mjh/hello-world]
01bb4fce3eb1: Pushed
1.0: digest: sha256:7e9b6e7ba2842c91cf49f3e214d04a7a496f8214356f41d81a6e6dcad11f11e3 size: 525
docker tag hello-world:latest 192.168.2.99:8089/mjh/hello-world:1.0
docker tag ydhflask11:2.0 192.168.2.99:8089/mjh/myflask:1.0
docker push 192.168.2.99:8089/mjh/hello-world:1.0
docker push 192.168.2.99:8089/mjh/myflask:1.0
下载镜像
删除本地镜像测试
docker rmi hello-world
docker pull 192.168.2.99:8089/mjh/hello-world:1.0
这是harbor仓库给出的拉取命令,一样可以
docker pull 192.168.2.99:8089/mjh/hello-world@sha256:7e9b6e7ba2842c91cf49f3e214d04a7a496f8214356f41d81a6e6dcad11f11e3
查看本地镜像
[root@localhost harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
...
192.168.2.99:8089/mjh/hello-world 1.0 9c7a54a9a43c 2 months ago 13.3kB
...
可以看到镜像已经被垃圾下来了,harbor可以正常使用