DevOps创建私有化的镜像仓库

镜像广场

基于harbor创建私有化的docker镜像仓库,提供稳定的镜像托管服务,镜像广场包括官方镜像及私有镜像。

点击菜单栏中的“运维工具”,进入“镜像广场”。

Docker客户端版本要求1.12及以上。

概念

1.项目

一个项目中,包含多个镜像仓库。一个镜像仓库中,包含多个版本

同一个租户名,项目名唯一

举例:

tenant0202.hub-ark-hn.cloud.com/library/centos:7.3

在这个地址中,

  • 域名:tenant0202.hub-ark-hn.cloud.com
  • 项目:library
  • 镜像:centos
  • 版本:7.3

2.镜像类型

1)概述

关于镜像类型,分为两类,分别:

基础镜像:一般指原生的Centos操作系统,个人可以推送到镜像广场管理和维护

编译镜像:一般指在基础镜像上安装了编译需要的软件,例如(mavenkgcc等)编译需要的环境镜像,个人可以推送到镜像广场管理和维护

2)默认

推送到镜像广场的镜像类型,默认为基础镜像

3)修改镜像类型

操作如下:镜像广场---选中左侧服务树指定产品线,点击右边页面中的指定项目--进入镜像仓库分页,点击指定镜像仓库名称–进入镜像详情页,点击镜像类型旁边的编辑按钮。若没有编辑权限,请查看镜像广场权限

4)与编译构建的关系

新建构建中的“构建镜像”即为镜像广场中的“编译镜像”

制作镜像

1.安装docker

#CentOSyuminstalldocker

2.启动docker服务

systemctlstartdocker

3.生成Dockerfile

#若基础镜像为自定义项目中的,那么,FROM租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#若基础镜像为官方项目中的,那么,FROMtenant0202.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#示例FROMtenant0202.hub-ark-hn.cloud.com/library/centos:7.3RUNyum-yinstallcentos-release-gluster41yum-yinstallglusterfs-server

  • 也可选择手动拉取镜像到本地,详见拉取镜像广场中的镜像
  • 官方项目中,library为编译镜像
  • Dockerfile的编写可参考官方项目中的镜像的Dockerfile,查看方法如下:菜单--镜像广场--官方项目--点击项目中某镜像,进入到镜像详情页面--指定版本,点击“查看DockerFile”

4.构建docker镜像

#可包含域名信息,也可不包含域名信息#不包含域名信息dockerbuild-t{镜像名}:{版本}.#示例dockerbuild-tglusterfs:4.1.5.#包含域名信息dockerbuild-t{域名}/{项目名}/{镜像名}:{版本}.#若基础镜像为自定义项目中的,那么,域名为租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#若基础镜像为官方项目中的,那么,域名为tenant0202.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#示例dockerbuild-t租户名.hub-ark-hn.cloud.com/xdata-op/glusterfs:4.1.5.

5.查看docker镜像

dockerimages

6.运行docker镜像

#若基础镜像为自定义项目中的,那么,域名为租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#若基础镜像为官方项目中的,那么,域名为tenant0202.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}示例#编译镜像dockerrun-titenant0202.hub-ark-hn.cloud.com/library/centos:7.3/bin/bash

7.查询正在运行的docker容器

dockerps

8.其他常用命令

#登录docker镜像dockerexec-ita6779e27ca13bash#停止docker镜像dockerstopa6779e27ca13#删除docker容器dockerrma6779e27ca13

推送镜像到镜像广场

1.【前提】在镜像广场页面中,有权限向项目中推送镜像

  • 谁有权限向项目中推送镜像:项目所关联的产品线运维、产品线开发、项目成员中系统的运维
  • 如何新建项目:在镜像广场页面,创建项目。新建的项目为自定义项目。具体操作如下:菜单--运维工具--镜像广场,左侧服务树选中某产品线(此产品线即为项目将要关联的产品线),该产品线的运维角色,可在右侧点击“新建项目”按钮;需填写项目名称、成员,成员为该产品线下的系统,具体权限请详见:镜像广场权限

2.列出本地镜像

dockerimages

3.后台启动容器,验证配置是否正确

#若基础镜像为自定义项目中的,那么,域名为租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#若基础镜像为官方项目中的,那么,域名为tenant0202.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}#示例#编译镜像dockerrun-titenant0202.hub-ark-hn.cloud.com/library/centos:7.3/bin/bashdockerps

4.登录镜像仓库

dockerlogin-u{用户名}-p{密码}租户名.hub-ark-hn.cloud.com

返回「LoginSucceded」即为登录成功。

用户名=DevOps中的用户名,密码=DevOps中的密码

5.标记本地镜像

若build时已包含域名,那么这里无需再进行dockertag

dockertag{镜像名/ID}租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

6.推送本地镜像到镜像广场

dockerpush租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

拉取镜像广场中的镜像

1.官方项目的镜像

镜像广场--官方项目分页--镜像仓库分页--镜像详情页,点击版本后面的复制镜像地址

dockerpulltenant0202.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

2.自定义项目中的公开镜像仓库

镜像广场--自定义项目分页--镜像仓库分页--镜像详情页,点击版本后面的复制镜像地址

dockerlogin-u{用户名}-p{密码}租户名.hub-ark-hn.cloud.com#拉取镜像dockerpull租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

用户名=DevOps中的用户名,密码=DevOps中的密码

谁有权限拉取自定义项目中的公开镜像仓库中的镜像:租户内的所有人

3.自定义项目中的共享镜像仓库

镜像广场--自定义项目分页--镜像仓库分页--镜像详情页,点击版本后面的复制镜像地址

#拉取镜像dockerpull租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

用户名=DevOps中的用户名,密码=DevOps中的密码

谁有权限拉取自定义项目中的共享镜像仓库中的镜像:所有人

4.自定义项目中的私有镜像仓库

选中左侧服务树中的产品线,镜像广场--自定义项目分页--镜像仓库分页--镜像详情页,点击版本后面的复制镜像地址

dockerlogin-u{用户名}-p{密码}租户名.hub-ark-hn.cloud.com#拉取镜像dockerpull租户名.hub-ark-hn.cloud.com/{项目名}/{镜像名}:{版本}

用户名=DevOps中的用户名,密码=DevOps中的密码

谁有权限拉取自定义项目中的私有镜像仓库中的镜像:项目所关联的产品线负责人+产品线运维+产品线开发+项目成员中系统的运维、测试、产品、研发,以及下面应用的运维、开发

权限

1.定义

项目:类似于Harbor中的项目,作为镜像仓库的集合

  • 官方项目:由官方创建并提供官方镜像
  • 自定义项目:产品线运维可在产品线维度创建自己的项目,并且指定项目成员,pull、push镜像到项目。项目成员为该产品线下的系统。

镜像仓库:归属于某个项目,一个项目中有多个镜像仓库,一个镜像仓库中有多个版本

镜像仓库有两个维度:

1)访问权限

  • 公开:租户内所有用户公开
  • 私有:项目成员内公开
  • 共享:租户间所有用户公开

2)镜像类型

基础镜像:作为基础镜像编译镜像:可用于编译构建时,选择的构建镜像

2.项目权限

新建项目删除项目新增/删除/修改项目成员,即选择服务树对应系统查看服务树-产品线运维可在自己的产品线维度创建项目服务树-产品线运维可删除自己产品线关联的项目服务树-产品线运维租户内的ALL

3.镜像仓库权限

新建的镜像仓库默认是私有的、基础镜像

查看时,请注意要在左侧服务树中指定产品线

镜像仓库权限拉取镜像修改访问权限(公开/私有/共享)修改镜像类型(基础/编译)查看修改描述删除查看可以在编译构建时选择项目:官方镜像仓库:公开ALL无需用户名密码不涉及不涉及不涉及不涉及不涉及ALLALL项目:自定义镜像仓库:公开租户内的ALL产品线运维+产品线开发+项目成员中系统的运维产品线运维产品线运维+产品线开发+项目成员中系统的运维产品线运维+产品线开发+项目成员中系统的运维产品线运维租户内的ALL租户内的ALL项目:自定义镜像仓库:私有产品线负责人+产品线运维+产品线开发+项目成员中系统的运维、测试、产品、研发,以及下面应用的运维、开发产品线运维+产品线开发+项目成员中系统的运维产品线运维产品线运维+产品线开发+项目成员中系统的运维产品线运维+产品线开发+项目成员中系统的运维产品线运维产品线负责人+产品线运维+产品线开发+项目成员中系统的运维、测试、产品、研发,以及下面应用的运维、开发产品线负责人+产品线运维+产品线开发+项目成员中系统的运维、测试、产品、研发,以及下面应用的运维、开发项目:自定义镜像仓库:共享ALL产品线运维+产品线开发+项目成员中系统的运维产品线运维产品线运维+产品线开发+项目成员中系统的运维产品线运维+产品线开发+项目成员中系统的运维产品线运维ALLALL

4.镜像版本权限

镜像版本权限查看DockerFile删除项目:官方镜像仓库:公开ALL不涉及项目:自定义镜像仓库:公开不涉及产品线运维+产品线开发+项目成员中系统的运维项目:自定义镜像仓库:私有不涉及产品线运维+产品线开发+项目成员中系统的运维项目:自定义镜像仓库:共享不涉及产品线运维+产品线开发+项目成员中系统的运维