Code前端首页关于Code前端联系我们

Docker 使用编译:Dockerhub 公共镜像库 VS 私有镜像库 Harbor

terry 2年前 (2023-09-28) 阅读数 73 #未命名
作者:大港测试与开发实践
来源:知乎

介绍如何自定义docker镜像、容器或容器。没有提到镜像管理,那么我们是否可以像管理代码一样实现对镜像文件的push和pull操作呢?答案是肯定的。 Docker-hub 是一个公共存储库,您可以在其中搜索他人创建的各种镜像并管理自己的镜像。 Harbor是一个私有的镜像仓库,我们可以在这里上传图片。同一 Intranet 上的其他用户可以在那里下载和使用它。由于部署在自己的服务器上,安全性更有保证。 Docker-hub和Harbor之间的关系可以类比为GitHub和Gitlab。

1。公共镜像存储库 Docker-hub

1。 Docker Hub简介

公共镜像仓库通常由Docker官方或其他第三方组织(阿里云、腾讯云、网易云等)提供,允许所有人注册并使用镜像仓库。 Docker Hub 是全球最大的镜像市场,拥有超过 100,000 个容器镜像。 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

2。提交镜像到仓库

具体步骤:注册账号>>登录>>创建仓库>>Linux命令行docker登录>>更改镜像名称(与仓库名称保持一致)>>提交镜像到仓库

① 创建镜像仓库

与在github上创建代码仓库类似。它分为两种:公共(公开的,对互联网可见)和私有(受保护的,对自己可见)。 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

② Linux 命令行登录 Docker 帐号

docker login  # 登录docker-hub
docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

③ 修改镜像名称与镜像仓库一致

docker tag joinsunsoft/docker.ui:latest chenjigang/auto-test:v1.1
docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

④ 提交镜像到公共仓库

docker push chenjigang/auto-test:v1.1
docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

⑤ 查看镜像仓库

docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

2. 单独的镜像存储库端口

1。 Harbor简介

Harbor是VMware开源的企业级Docker注册表管理项目。它包括权限管理(RBAC)、LDAP、日志审计、管理界面、自注册、镜像复制、中国支持等功能。 。 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

作为企业级私有注册服务器,Harbor 提供更好的性能和安全性。提高使用注册表创建和运行映像交付环境的用户的效率。Harbor支持安装在多个注册节点上的镜像资源的复制。所有镜像都存储在私有注册表中,以确保对公司内联网内的数据和知识产权的控制。此外,Harbor还提供高级安全功能,例如用户管理、访问控制和活动审核。

  • 基于角色的访问控制 - 用户和 Docker 镜像存储库通过“项目”进行组织和管理。一个用户可以对同一命名空间(项目)中的多个镜像存储库拥有不同的权限。
  • 镜像复制 – 可以在多个注册表实例之间复制(同步)镜像。特别适合负载均衡、高可用、混合云、多云场景。
  • 图形用户界面 - 用户可以浏览浏览器、拉取当前的 Docker 镜像存储库以及管理项目和命名空间。
  • AD/LDAP 支持 - Harbor 可以与企业中的 AD/LDAP 集成来管理身份验证。
  • 审计管理 – 可以记录和跟踪所有镜像仓库操作,以进行审计管理。
  • 国际化 - 本地化版本有英语、中文、德语、日语和俄语。将添加更多语言。
  • RESTful API - RESTful API 使管理员能够更好地控制 Harbor,从而更轻松地与其他管理软件集成。
  • 易于部署 - 提供在线和离线安装工具,也可以安装在vSphere平台上的虚拟设备中(OVA方法)。

gitee地址:https://gitee.com/project_harbor/harbor?utm_source=alading&utm_campaign=repo

2.搭建Harbor

安装说明:Harbor所有服务组件都部署在Docker中,所以官方安装使用Docker-compose来实现快速部署,所以需要安装Docker和Docker-compose。由于 Harbor 基于 Docker 注册表的 V2,因此 Docker 版本必须至少为 1.10.0,并且 Docker 版本必须至少为 1.6.0。docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

下载安装包并解压

在线下载:

wget https://github.com/goharbor/harbor/releases/download/v2.2.2/harbor-online-installer-v2.2.2.tgz
tar -xvf harbor-online-installer-v2.2.2.tgz

②编辑配置文件

cp harbor.yml.tmpl harbor.yml  # 复制一份harbor.yml文件
vi harbor.yml

编辑如下:

  • 默认为端口ip❀更改本地ip8.,即可改成别的 设置端口
  • 注释相关https配置
docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

③ 准备安装环境

./prepare  # 执行prepare脚本

完成后,本地会出现额外的docker-compose.yml文件和共享目录 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

④ 安装端口

./install.sh  # 安装harbor

期间安装 端口镜像会自动下载并启动相关容器。

⑤访问端口

安装成功后,可以访问端口:http://192.168.1.122:8087 其中:ip为本地IP,port为harbor.yml配置文件中配置的端口。默认账号和密码为:admin Harbour12345docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

密码可在harbour.yml文件中查看或更改docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

⑥安装过程中常见问题及解决方案

  • 错误信息容器重复
docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

:redis容器本地已存在。 Harbor 无法启动 redis 容器

解决方案:更改harbor目录下的 docker-compose.yml 文件中的 redis 容器名称并重新启动 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

docker-compose up -d

检查每个harbor容器的状态:docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

  • ❙❀复制registry容器时出错。如果本地registry容器已经存在,则port安装过程中会报错。解决办法:删除原来的registry容器,重新运行./install.sh进行安装;如果还是这样报错,则运行docker-compose up -d启动各个服务;

    3。将本地镜像推送到端口

    ① 创建项目

    docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    ② Docker 登录

    由于您之前已经登录过 docker-hub,如果您再次使用“docker login”命令登录,则默认登录为 docker hub。地址。因此,如果要登录某个端口,则在登录时必须指定登录地址。

    docker login 192.168.1.122:8087

    首次登录时,只需根据提示输入端口用户名和密码,与登录用户界面时使用的账号和密码一致。

    由于我之前已经登录过这个地址一次,所以认证记录存储在本地,所以当我再次登录时,无需输入用户名和密码就可以成功登录。 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    如果出现以下错误: docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    将本地IP(端口不是80时需要端口号)添加到/etc/docker/daemon.json中的不安全寄存器列表中,并重新加载配置。

    {
            "registry-mirrors":[
            "http://registry.docker-cn.com",
            "http://docker.mirrors.ustc.edu.cn",
            "http://hub-mirror.c.163.com",
            "http://cr.console.aliyun.com/",
            "https://8wb4g36l.mirror.aliyuncs.com"
    ],
            "insecure-registries":["192.168.1.122:8087"],
            "graph": "/home/docker_home"
    }
    docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor
    systemctl daemon-reload
    systectl restart docker

    重新登录后,登录成功: docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    ③标记本地镜像

    镜像名称必须设置为以下名称:ip:端口号/项目名称/镜像名称:标签名称才可以上传到指定项目,例如rabbitmq Mirror,名称为:192.168.1.122:8087/harbor/rabbitmq:5.7.33

    为了方便测试,我直接复制了本地的Push镜像并重命名为: ❑ 本地镜像到harbor

    docker push 192.168.1.122:8087/harbor/rabbitmq:3.7-management
    docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    检查名为harbor、rabbitmq :3.7-management的项目是否存在,测试成功。 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    ⑤ 从端口拉取镜像

    • 拉取镜像
    docker pull 192.168.1.122:8087/library/mysql:5.7.33

    如下图所示,MySQL 镜像拉取成功 docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    同时 Harbor 管理端也可以看到最新拉取时间:docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    • 创建容器
    docker run -it -d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql -p 3307:3306 192.168.1.122:8087/library/mysql:5.7.33
    docker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

    登录MySQL-i indocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbordocker用法整理:Docker-hub公共镜像仓库VS私有化镜像仓库Harbor

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门