Docker镜像仓库Harbor安装部署详细教程

作者博客: www.lstar.icu

开源地址
Gitee 地址: https://gitee.com/lxwise
Github 地址: https://github.com/lxwise

1.镜像仓库简介

镜像仓库作用:存储镜像,可以通过镜像仓库实现镜像的共享

镜像仓库的使用流程:

在这里插入图片描述

镜像仓库分类:

1、公有镜像仓库:可以理解成云仓库、公有仓库,是由某个组织、公司维护的仓库,对互联网开放,所有人共享。如官方的仓库docker hub,阿里云镜像仓库

2、私有镜像仓库:不对外开放。一般情况下只在公司内网中使用,用于加快镜像拉取速度、维护公司资产。

私有镜像仓库种类:

1、Registry是Docker自带的镜像仓库,部署运行非常简洁,非常适合在测试时使用。

2、Harbor

2. Harbor简介

Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

3. docker-compose安装

最新的 docker 已经集成了 docker-compose 功能,可以不用安装

[root@localhost ~]# docker compose version
Docker Compose version v2.27.1
3.1 下载docker-compose

下载地址

https://github.com/docker/compose/releases

在这里插入图片描述
在这里插入图片描述

3.2 上传到服务器

上传到 /usr/bin 目录,不需要解压

mv docker-compose-linux-x86_64 /usr/bin/docker-compose

docker-compose赋予可执行权限

 chmod +x /usr/bin/docker-compose

检查是否安装成功

docker-compose version

显示Docker Compose version v2.34.0即安装成功

4. Harbor安装

4.1 下载

Harbor被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux服务器上,且需要Docker和Docker Compose才能安装。

下载地址:https://github.com/goharbor/harbor/releases

在这里插入图片描述
这里我们下载在线安装包:

wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-online-installer-v2.8.0.tgz
4.2 安装

具体步骤如下所示:

1、解压并修改配置文件

tar -zxvf harbor-online-installer-v2.8.0.tgz     # 解压tgz包
cp harbor.yml.tmpl harbor.yml                    # 创建一个配置文件
vim harbor.yml                                   # 修改配置文件

配置的文件的修改如下所示:
在这里插入图片描述
2、安装Harbor

# 1、 进入到Harbor的解压目录
# 2、执行安装脚本
sh install.sh

在这里插入图片描述

注意:如果安装的时候报错了,可以给docker配置多个镜像地址:

// 编辑文件
vim /etc/docker/daemon.json

// 文件内容
{
  "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

3、启动关闭命令

docker-compose -f docker-compose.yml up -d            启动 Harbor
docker-compose -f docker-compose.yml stop             关闭 Harbor

4、访问Harbor

  • 访问地址:http://192.168.12.53:8089
    在这里插入图片描述
  • 用户名/密码:admin/admin
    在这里插入图片描述
    5、docker添加安全访问权限
# 编辑/etc/docker/daemon.json文件
vim /etc/docker/daemon.json

# 添加安全访问权限
{
  "insecure-registries":["http://192.168.12.53:8089"]
}

# 重启Docker
systemctl restart docker

5. Harbor设置开机自启

1.新建系统服务文件

sudo vim /etc/systemd/system/harbor.service

2.粘贴下面内容

[Unit]
Description=Harbor Docker Compose Service
After=docker.service network-online.target
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/harbor
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target                              
  • WorkingDirectory为你harbor所在目录
  • ExecStart为你docker-compose所在目录启动命令
  • ExecStop为你docker-compose所在目录停止命令

3.刷新系统服务

sudo systemctl daemon-reload

# 停止
sudo systemctl stop harbor
# 启动
sudo systemctl start harbor
# 状态
sudo systemctl status harbor
# 重启
sudo systemctl restart harbor

当然也可以用docker-compse启动

docker-compose -f docker-compose.yml up -d            启动 Harbor
docker-compose -f docker-compose.yml stop             关闭 Harbor

6. Docker镜像推送Harbor仓库

6.1 将应用打包成镜像

例如有一个Dockerfile文件

FROM openjdk:8-jdk-slim
LABEL maintainer=yuze

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

COPY target/.jar /app.jar 将linux中的.jar复制到docker容器中并命名app.jar

docker build -f Dockerfile -t devops-demo:v1.0 .

最后的. 表示基础目录是本目录,这里和dockerfile中的Copy命令 后面的参数相对应

6.2 登录Harbor仓库

使用docker login命令认证,需提前在Harbor创建用户并分配项目权限:

docker login your-harbor-ip:port -u username -p password

输出示例:Login Succeeded 表示成功!

docker login 192.168.12.53:8089 -u admin -p admin
[root@localhost _data]# docker login 192.168.12.53:8089 -u admin -p admin
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
6.3 给镜像打标签

镜像命名规则必须符合:Harbor地址/项目名/镜像名:标签

使用docker tag重命名本地镜像:

docker tag local-image:tag your-harbor-ip:port/project-name/image-name:tag

示例:

docker tag devops-demo:v1.0 192.168.12.53:8089/dev/devops-demo:v1.0
6.4 推送镜像到Harbor

执行docker push命令:

docker push your-harbor-ip:port/project-name/image-name:tag

成功示例:

docker push 192.168.12.53:8089/dev/devops-demo:v1.0

在这里插入图片描述

7.避坑指南:6大常见问题解决

1.权限不足:403 Forbidden

  1. 检查用户是否拥有目标项目的推送权限(Harbor中项目需提前创建)

  2. 项目权限设置为公开或用户加入对应项目成员

2.镜像标签格式错误

  1. 必须包含Harbor地址、项目名、镜像名三段式结构

  2. 错误示例:myproject/nginx:v1(缺少Harbor地址)

3.HTTP协议未配置

  1. 未配置insecure-registries导致报错:http: server gave HTTP response to HTTPS
    client

  2. 生产环境建议配置HTTPS证书避免此问题

4.网络不通

  1. 检查Harbor服务状态:docker-compose ps(若使用容器部署)

  2. 防火墙是否放行端口(默认80/443)

5.磁盘空间不足

  1. Harbor默认存储路径/data(可挂载大容量磁盘)

  2. 定期清理旧镜像或启用存储配额

6.镜像层太大导致超时

  1. 优化Dockerfile,减少镜像层大小

  2. 调整Docker客户端超时时间

### 使用Docker部署Harbor镜像仓库 #### 准备工作 为了确保顺利部署Harbor,需先确认主机已安装好必要的组件。对于CentOS 7.9这样的操作系统而言,在开始之前应该启动`docker`服务,并设置开机自启[^3]。 ```bash systemctl start docker && systemctl enable docker ``` #### 下载与解压Harbor包 前往官方页面获取最新版本的Harbor离线安装文件,通常是一个`.tgz`压缩包形式提供给用户下载。下载完成后将其放置于目标服务器上并执行如下命令完成解压操作: ```bash tar -zxvf harbor-offline-installer-v*.tgz cd harbor* ``` #### 修改配置文件 进入解压后的目录后会发现有一个名为`harbor.yml`的重要配置文件,默认情况下该文件已经包含了大部分预设参数。根据实际需求调整其中的相关选项,比如修改对外访问地址、管理员密码等重要信息[^4]。 #### 执行安装脚本 一切就绪之后就可以通过运行提供的Shell脚本来快速完成整个过程了。此步骤将会依据前面编辑好的配置自动创建所需资源以及初始化数据库等内容。 ```bash ./install.sh ``` 如果一切正常的话,则说明Harbor已经被成功部署到了当前环境中去了。此时可以通过浏览器尝试打开对应的URL来验证是否能够正常访问管理界面。 #### 测试连接稳定性 最后一步就是检验新搭建起来的服务能否正常使用了。这包括但不限于利用客户端工具向里面推送测试性质的小型应用映像;或者是模拟从远端节点拉取已有项目来看看网络连通性和权限控制机制等方面的表现情况如何[^1]。 ```python import docker client = docker.from_env() image_name = "your_private_repo/test_image:latest" try: client.images.pull(image_name) except Exception as e: print(f"Failed to pull image {image_name}, error: {e}") else: print(f"Pulled image {image_name} successfully.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值