Docker学习&应用-安装docker镜像私服


Docker学习&应用-安装docker镜像私服

Published on August 30, 2023 by Andersen

docker 运维

5 min READ

On This Page

Harbor

Harbor 是一个开源的企业级 Docker Registry 和图形用户界面(GUI),用于存储、管理和分发 Docker 镜像。它提供了一个安全可靠的私有镜像仓库,适用于组织内部的镜像管理和共享。

Harbor 提供了以下主要功能:

  1. 镜像存储和管理:Harbor 允许用户上传、下载和管理 Docker 镜像。它提供了持久性的存储,可以存储大量的镜像,并支持镜像的标签和版本管理。

  2. 安全性和访问控制:Harbor 提供了丰富的安全功能,包括用户认证、访问控制和镜像签名。它支持多种身份验证方式,如用户名密码、LDAP、Active Directory 等,可以控制用户对镜像的访问权限。

  3. 图形用户界面:Harbor 提供了一个直观的图形用户界面,用于浏览和管理镜像。用户可以通过界面搜索、查看镜像详情、管理标签、上传和下载镜像等。

  4. 复制和同步:Harbor 支持镜像的复制和同步功能。您可以将镜像从一个 Harbor 实例复制到另一个 Harbor 实例,实现镜像的分发和备份。

  5. 审计和日志:Harbor 记录了镜像仓库的操作日志,并提供审计功能,以便跟踪和审查用户对镜像的操作。

  6. 灵活的部署选项:Harbor 支持多种部署选项,可以在单个节点或多个节点上部署,以满足不同规模和需求的部署场景。

Harbor 是一个功能强大且可扩展的企业级 Docker Registry 解决方案,它提供了更多的安全性、访问控制和管理功能,适用于组织内部的镜像管理和共享需求。

Harbor安装

harbor基于docker,docker-compose

安装docker-compose

  1. 下载docker compose:https://github.com/docker/compose/releases/
  2. 上传到服务器到/usr/local/bin中,确定/usr/local/bin在环境变量中
  3. 赋予执行权限:chmod +x /usr/local/bin/docker-compose
  4. 验证安装是否成功:docker-compose --version

安装harbor

  • 下载离线安装包:https://github.com/goharbor/harbor/releases
  • 上传到服务器并解压:tar -xzf harbor-offline-installer-v2.9.0.tgz
  • cd harbor:cd到目录
  • cp harbor.yml.tmp harbor.yml:复制配置文件模板
  • 修改配置文件
hostname: 192.168.5.1 //本地ip或者域名
http:
    prot:80 //端口
https: //https不使用可以注释掉
    prot:443

harbor_admin_password: Harbor12345 //后管登录

  • ./install.sh:安装harbor

停止及重启harbor

  • 停止:cd harbor docker-compose stop
  • 重启:docker-compose up -d

如果修改了harbor配置文件不生效可以执行如下命令

  1. 进入harbor安装目录
  2. ./prepare:清除相关配置文件
  3. docker-compose down -v:停止
  4. docker-compose up -d:启动

关于nginx代理问题

先修改harbor.yml文件

hostname: harbor.xxx.com //设置成你的公网ip或者域名
http:
  prot: 8080

nginx代理,以下是最简单的设置 如果非默认端口设置起来就比较复杂,因为harbor自带了一层ng

server{
  listen 80;
  host_name harbor.xxx.com
  location / {
    proxy_pass http://192.168.1.22:8080;
  }
}

如果坚持使用非标准接口,比如80,443等 直接开放8080端口就行了,直接通过域名:8080

本地docker配置远程仓库

linux默认路径/etc/docker/daemon.json或者执行docker info查看
如果没有则新增daemon.json
然后添加配置,如果是80,443 则直接写http https即可,非标准端口需要写明端口

......
  "insecure-registries": [
    "harbor.xxx.com:8080"
  ],
  "registry-mirrors": [
    "https://hub.docker.com",
    "http://harbor.xxx.com:8080"
  ]
......


然后docker login harbor.xxx.com:8080即可