博客
关于我
Docker(七)Harbor私有仓库搭建
阅读量:375 次
发布时间:2019-03-05

本文共 2514 字,大约阅读时间需要 8 分钟。

Harbor私有镜像仓库搭建指南

1. 引言

在 Docker 容器化应用的开发和运行过程中,镜像管理是至关重要的一环。尽管 Docker 官方提供了公共镜像仓库,但从安全性和效率等方面考虑,搭建私有镜像仓库是非常必要的。Harbor 是 VMware 公司开源的企业级 Docker Registry 管理项目,具备权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制以及中文支持等多项功能。

此外,docker-compose 是一个强大的编排工具,能够轻松管理多个服务的启动顺序和优先级。


2. 发布环境架构

Harbor 私有镜像仓库的架构主要由以下几个关键组件构成:

  • Proxy(Nginx):作为反向代理,负责流量转发和安全验证。
  • Registry:基于 Docker 官方镜像构建的容器实例,用于存储镜像。
  • UI:Harbor 项目的核心服务组件,负责前端页面和后端接口。
  • MySQL:用于存储系统数据,基于官方 MySQL 镜像构建。
  • Log:运行 rsyslogd 容器,负责日志收集和管理。

这些服务需要根据优先级进行排列和配置。


3. Docker Compose 安装

安装 Docker Compose 可以通过以下命令实现:

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

4. 版本查看

可以通过以下命令查看 Docker Compose 的版本:

docker-compose --version

5. 安装 Harbor 镜像

Harbor 提供了离线安装包,下载并解压后可以通过以下命令加载镜像:

docker load -i harbor.v1.8.0.tar.gz

6. 安装步骤说明

6.1 生成 SSL 证书

  • 创建 CA 密钥对:
  • openssl req -x509 -new -nodes -sha512 -days 3650 \  -subj "/C=CN/ST=wzj/L=wzj/O=example/OU=Personal/CN=wzj.com" \  -key ca.key -out ca.crt
    1. 生成服务器端密钥对:
    2. openssl genrsa -out reg.wzj.com.key 4096
      1. 生成服务器端证书:
      2. openssl req -sha512 -new \  -subj "/C=CN/ST=wzj/L=wzj/O=example/OU=Personal/CN=reg.wzj.com" \  -key reg.wzj.com.key -out reg.wzj.com.csr
        1. 创建扩展文件:
        2. vim v3.ext
          1. 使用扩展文件生成服务器端证书:
          2. openssl x509 -req -sha512 -days 3650 \  -extfile v3.ext \  -CA ca.crt -CAkey ca.key -CAcreateserial \  -in reg.wzj.com.csr -out reg.wzj.com.crt

            6.2 安装证书

            将证书和私钥复制到 /root/cert 目录,并配置 harbor.yml 文件:

            mkdir /root/certcp reg.wzj.com.crt reg.wzj.com.key /root/cert/

            6.3 配置 harbor.yml

            编辑 harbor.yml 文件,确保配置正确无误:

            version: '3'services:  - name: proxy    image: nginx:latest    ports:      - "443:443"    volumes:      - ./harbor.yml:/etc/harbor/harbor.yml    restart: always  # 其他服务配置...

            6.4 加载镜像并启动服务

          3. 加载镜像:
          4. docker load -i harbor.v1.8.0.tar.gz
            1. 执行准备脚本:
            2. ./prepare
              1. 执行安装脚本:
              2. ./install.sh

                7. 后台启动

                为了实现服务的自动启动,可以通过以下命令执行:

                docker-compose downdocker-compose up -d

                8. 常见问题

                8.1 yml 文件格式错误

                如果在解析 yml 文件时出现以下错误:

                org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping

                可能是由于 yml 文件格式不正确导致的,确保文件中没有多个空格或其他格式问题。

                8.2 Docker 登录问题

                在命令行中登录私有仓库时可能会遇到以下问题:

                docker login reg.wzj.com

                请确保持有相应的 CA 证书,并且配置正确。


                9. 注意事项

                • 配置文件中的域名必须正确解析,确保通过 HTTPS 访问。

                • harbor.yml 文件的修改需要重新启动服务,可以通过以下命令实现:

                  docker-compose downdocker-compose up -d

                10. Harbor 组件说明

                Harbor 的主要组件包括:

                • Nginx:负责反向代理和 HTTPS 加密。
                • harbor-ui:提供镜像仓库的管理界面。
                • harbor-adminserver:用于系统配置和管理接口。
                • harbor-db:存储系统数据和权限信息。
                • harbor-log:统一管理和收集日志。

                这些组件通过 Docker link 的形式连接在一起,实现高效的服务访问和管理。


                通过以上步骤,可以成功搭建一个高效、安全的私有 Docker 镜像仓库。

    转载地址:http://epzwz.baihongyu.com/

    你可能感兴趣的文章
    Python函数之返回值、作用域和局部变量
    查看>>
    Python+统计学 | 探索常用的数据分析统计分布
    查看>>
    python, selenium中用于切换帧的函数
    查看>>
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>
    python---5
    查看>>
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>