君玉自牧 君玉自牧
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
  • 技术架构

  • 桌面维护

  • 网络工程

  • 系统运维

  • 环境搭建

  • 容器编排

    • Docker 安装部署 & 常规配置
    • Docker Swarm 集群部署
    • Docker Compose
    • 构建最小镜像
    • Kubernetes 集群部署
    • Kubernetes 项目实践
    • Kubernetes YAML 入门
    • Kubernetes 存储卷
    • 镜像仓库:Harbor
      • 一、介绍
      • 二、架构
      • 三、部署
      • 四、故障
        • 1.端口冲突
        • 2.解决办法
    • 容器管理:Portainer
    • Kubernetes 使用故障
  • 持续集成

  • 监控告警

  • 项目实践

  • 脚本开发

  • 前端开发

  • 后端开发

  • 效率工具

目录

镜像仓库:Harbor

Harbor (opens new window) 是存储和分发 Docker 镜像的企业级 Registry 服务器,也支持 Helm 仓库,由 VMware 开源 d2b933ca04b36decdfb76fe79864f1b3.png

# 一、介绍

  • 基于角色的访问控制

用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

  • 基于镜像的复制策略

镜像可以在多个 Registry 实例中复制(可以将仓库中的镜像同步到远程的 Harbor,类似于 MySQL 主从同步功能),尤其适合于负载均衡,高可用,混合云和多云的场景。

  • 图形化用户界面

用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。

  • 支持 AD/LDAP

Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。

  • 镜像删除和垃圾回收

Harbor 支持在 Web 删除镜像,回收无用的镜像,释放磁盘空间;image 可以被删除并且回收 image 占用的空间。

  • 审计管理

所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

  • RESTful API

RESTful API 提供给管理员对于 Harbor 更多的操控,使得与其它管理软件集成变得更容易。

  • 部署简单

提供在线和离线两种安装工具,也可以安装到 vSphere 平台(OVA 方式)虚拟设备。

# 二、架构

4d67fe4fdf322f4060bed408513db6e3.png Proxy:反向代理工具 Registry:负责存储 docker 镜像,处理上传/下载命令。对用户进行访问控制,它指向一个 token 服务,强制用户的每次 docker pull/push 请求都要携带一个合法的 token,registry 会通过公钥对 token 进行解密验证。 Core service:Harbor 的核心功能: UI:图形界面 Webhook:及时获取registry上image状态变化情况,在registry上配置 webhook,把状态变化传递给UI模块。 Token 服务:复杂根据用户权限给每个 Docker Push/Pull 命令签发 Token。Docker 客户端向 registry 服务发起的请求,如果不包含 token,会被重定向到这里,获得 token 后再重新向 registry 进行请求。 Database:提供数据库服务,存储用户权限,审计日志,docker image 分组信息等数据 Log collector:为了帮助监控harbor运行,复责收集其他组件的 log,供日后进行分析

# 三、部署

Harbor 的所有组件都在 Docker 中部署,所以 Harbor 可使用 Docker Compose 快速部署(Harbor 是基于 Docker Registry V2 版本,所以 Docker 版本必须 > = 1.10.0 Docker-Compose >= 1.6.0);官方列出了需要部署的组件,如下图: image.png 点击 (opens new window)下载最新的离线安装包,也可以在线安装 image.png 上传并解压,然后修改 yml 配置文件

cd /app/service
wget https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz
tar -xvf harbor-offline-installer-v2.6.0.tgz
cd harbor && cp harbor.yml.tmpl harbor.yml
vi harbor.yml
1
2
3
4
5

配置主机地址和端口等(提时:主机名不要使用 localhost 和 127.0.0.1) image.png 然后进行安装

./install.sh
1

image.png 会先检查是否安装 Docker 和 Docker-Compose 及其版本 image.png image.png 可以使用 http://127.0.0.1:prot 访问私有仓库 image.png

账号:admin 密码:Harbor12345

登录进去可以修改密码,以及其他的操作 image.png 之后命令

vi docker-compose.yml

docker-compose up -d
docker-compose start
docker-compose restart
docker-compose stop
1
2
3
4
5
6

修改配置给 Docker 添加私有仓库,http 需要使用不安全的字段(insecure-registries)

vi /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.1.1:8080"]
}
1
2
3
4

然后重启 Docker 生效

# 四、故障

# 1.端口冲突

Error response from daemon: Ports are not available: exposing port TCP 127.0.0.1:1514 -> 0.0.0.0:0: listen tcp 127.0.0.1:1514: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

报错信息来看时端口占用,搜索发现 Widnows Hyper-V 默认会排除一些端口

netstat -ano | findstr 1514
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv4 show excludedportrange protocol=udp
1
2
3

image.png

# 2.解决办法

1.以管理员身份运行终端,临时关闭 Hyper-V 和 winnat 网络

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
net stop winnat
1
2

2.使用以下命令永久排除指定端口作为保留端口(端口被占用需要先重启下)

netsh int ipv4 add excludedportrange protocol=tcp startport=1514 numberofports=1 store=persistent
1

关键在于store=persistent参数表示持久化信息,然后设置起始端口,已经后面的个数 3.再开启 Hyper-V 和 winnat 网络,1514 端口就从保留端口排除了

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
net start winnat
netsh interface ipv4 show excludedportrange protocol=tcp
1
2
3

重新开启 Hyper-V 没有进行重启,其实桌面系统可以不开启这个 image.png

网页编辑 (opens new window)
最近提交: 2023/03/22, 11:52:35
Kubernetes 存储卷
容器管理:Portainer

← Kubernetes 存储卷 容器管理:Portainer→

Theme by Vdoing | Copyright © 2011-2023 | 君玉自牧
粤ICP备15057965号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式