使用 Docker 搭建 Harbor 镜像仓库并进行操作
使用 Docker 搭建 Harbor 镜像仓库并进行操作
Harbor 是一个开源的企业级 Docker 镜像仓库,提供了镜像管理、访问控制、身份验证等功能,适用于容器化环境下的镜像存储管理。本文将介绍如何通过命令行搭建 Harbor 仓库,并进行常用操作。
1. 下载 Harbor 资源
首先,我们需要从 Harbor 的 GitHub 发布页面下载其最新版本的资源包。可以通过 wget 或者直接访问Harbor Releases页面 下载所需的版本。
- 使用 命令 下载 Harbor 资源包
wget https://github.com/goharbor/harbor/releases/download/v2.12.1/harbor-offline-installer-v2.12.1.tgz
- Github下载
下载地址:https://github.com/goharbor/harbor/releases
下载成功后,把包通过 xftp 上传到服务器。
2. 解压 Harbor 并修改配置文件
下载完成后,我们需要解压 Harbor 安装包,并修改其中的配置文件
harbor.yml
。
tar -zxvf harbor-offline-installer-v2.12.1.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml #新建一个harbor.yml
这会将 Harbor 安装包解压到当前目录,并进入解压后的 harbor 文件夹。
修改配置文件
打开 harbor.yml 配置文件,并根据需要进行修改,最重要的是修改 hostname 字段来指定 Harbor 的主机名或 IP 地址。例如:
#修改hostname的值,如果没有域名就使用本机IP地址
hostname: 192.168.1.100
#配置启动端口号
# http related config
http:
port: 5000
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: AdminHarbor12345
- hostname:设置为你的 Harbor 服务器的 IP 地址或域名。
- http:如果使用 HTTP 访问 Harbor,则指定端口号(默认为 80)。
- harbor_admin_password:启动成功后,
admin
用户登录密码
3. 启动 Harbor
配置文件修改成功后,执行 install.sh 脚本进行安装harbor。当然这需要先安装
docker、docker-compose
sudo ./install.sh
这个脚本会自动使用 docker-compose 启动 Harbor 所需的容器。
未安装docker-compose情况
[Step 0]: checking if docker is installed ...
Note: docker version: 26.1.3
[Step 1]: checking docker-compose is installed ...
/opt/harbor/common.sh: line 119: docker-compose: command not found
✖ Failed to parse docker-compose version.
安装成功
4. 进入 Harbor
在浏览器中访问 Harbor,地址为 访问IP+端口:(例如:http://192.168.1.100:5000)。你将看到 Harbor 的登录页面。
默认的管理员用户名和密码如下:
- 用户名:admin
- 密码:AdminHarbor12345
登录后,可以进入 Harbor 的管理界面。
4.1项目
项目管理顾名思义就是用来管理项目的。可以为每一个开发项目创建一个私有项目库,然后把Docker镜像存储到指定的项目中,为每个项目实现项目镜像隔离。创建项目的时候,Harbor提供了公开库(public repository)和私有库(private repository)两种类型的镜像存储空间。
- 公开库中的镜像是对所有用户可见和可访问的,任何人都可以查看和拉取其中的镜像。
- 私有库中的镜像则需要登录才能访问控制,只有被授权的用户或团队才能够查看、拉取和推送镜像。
4.2 角色
项目创建成功后,可以点击进入项目。在里面可以为每个项目单独设置不同的配置信息。可以为每一个项目添加成员信息。
上图是我以开发者身份进入
角色权限说明:
- 项目管理员(Project Administrator):拥有项目的最高权限,可以对项目进行全面管理,包括创建和删除项目、管理项目成员和权限、配置项目属性、查看项目日志等。
- 维护人员(Maintainer):类似于项目管理员,但权限稍低,通常用于协助管理项目,可以进行项目的部分管理操作,如添加和删除镜像、配置镜像的复制和同步规则等。
- 开发者(Developer):具有对项目中镜像仓库的读写权限,可以拉取、推送和删除镜像,以及管理部分项目配置,但不能进行项目管理操作。
- 访客(Guest):只具有对项目中镜像仓库的只读权限,可以查看镜像和元数据,但无法对镜像进行修改或删除操作。通常用于分享项目或镜像给外部团队或用户。
- 受限访客(Restricted Guest):是一种更加受限的访客角色,通常用于提供给外部用户或系统,具有对项目中镜像仓库的只读权限,但可能会限制访问的部分内容或功能。
4.3 日志
日志菜单就是记录用户操作日志信息的。
5 使用Docker 连接 Harbor
首先登录私有仓库地址:
docker login -u admin -p AdminHarbor12345 http://192.168.1.100:5000
会出现报错信息:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.1.100:5000/v2/": proxyconnect tcp: dial tcp 192.168.1.100:3128: connect: connection refused
通常是因为 Docker 默认不信任 Harbor 所在的地址。具体来说,Docker 可能会认为该地址不安全。
解决方法
为了让 Docker 信任 Harbor,你需要在 Docker 配置文件中添加 Harbor 的地址,具体步骤如下:
- 打开 Docker 配置文件 /etc/docker/daemon.json,如果该文件不存在,请创建它。
sudo vim /etc/docker/daemon.json
- 添加以下内容(假设 Harbor 使用 HTTP 协议,端口为 5000):
{
"insecure-registries": ["192.168.1.100:5000"]
}
- 保存并退出文件,然后重启 Docker 服务。
并重启harbor
sudo systemctl restart docker
sudo ./install.sh
6. 给本地镜像打标签
假设你已经有一个本地的 Docker 镜像,比如 nginx,现在你需要给它打上 Harbor 仓库的标签。
首先,查看你本地已有的镜像:
docker images
假设你要推送的镜像名为 nginx,并且你的 Harbor 仓库的地址是 192.168.1.100,项目名为 library,则可以用以下命令为镜像打标签:
docker tag nginx:latest 192.168.1.100/library/nginx:latest
这里,
192.168.1.100/library/nginx:latest
是 Harbor 仓库中镜像的标签,
library
是项目名,
nginx:latest
是
本地镜像
的名称和标签。
7. 推送镜像到 Harbor
使用
docker push
将打标签后的镜像推送到 Harbor 仓库:
docker push 192.168.1.100/library/nginx:latest
此命令会将
nginx:latest
本地镜像推送到 Harbor 仓库中的
library
项目下。
8. 从 Harbor 下载镜像
从 Harbor 仓库下载镜像,可以使用 docker pull 命令:
docker pull 192.168.1.100/library/nginx:latest
这会从 Harbor 仓库中拉取 nginx:latest 镜像。确保你的 Docker 客户端可以成功连接到 Harbor 仓库,并且该镜像已上传到仓库中。
总结
通过上述步骤,你可以成功搭建一个 Harbor 镜像仓库并进行相关操作。
Harbor 提供了功能强大的镜像管理和安全控制,能够满足企业级应用的需求。希望本文能够帮助你顺利搭建并使用 Harbor 镜像仓库。