Docker的中央仓库,Docker私服搭建

「伸手摘星,即使一无所获,亦不致满手污泥」

「请关注公众号:星河之码」

在使用maven管理jar包依赖的时候,为了避免每次都从中央仓库拉取依赖包,使用了nexus做了代理仓库。docker镜像仓库与nexus私服仓库作用类似,「用于将打包好的镜像保存在仓库中方便开发、测试、生产环境镜像拉取存储,减轻环境部署需要的相应操作」

一、什么是Docker私服

「Docker 官方的 Docker Hub 是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去」

但是,如果我们的服务器无法访问互联网,或者需要使用自己的自己私有镜像,此时我们就需要搭建自己的私有仓库,来存储和管理自己的镜像。

docker私服分为两种:

  • 「官方私服」
  • 「企业私服」

一般我们个人用不到这个,而在企业应用中官方显得不是很友好,没有界面,所以一般都是使用的企业私服

二、官方私服

docker官方给我们提供了一个私服registry用于管理自己的私有镜像,官网地址如下:

https://hub.docker.com/_/registry

下面来看看docker官方私服的搭建过程

  • 「拉取基础私服镜像」

    #可以不指定版本,拉取最新的
    docker pull registry:2.7.1
    Docker的中央仓库,Docker私服搭建
  • 「备份镜像」

    docker save registry:2.7.1 -o registry.2.7.1.tar
  • 「导入镜像」

    docker load -i registry.2.7.1.tar

    这里的备份和导入,只是为了将在这的镜像做一个备份,以后要用就不用重新去拉取了,如果不需要备份,可以不用执行,直接运行镜像即可

  • 「启动私有仓库容器

    docker run -itd -p 5000:5000 --name registry --restart=always registry:2.7.1

    registry的端口是5000

  • 「访问私服」

    打开浏览器 输入地址:http://私有仓库服务器ip:5000/v2/_catalog
    若看到 {"repositories":[]} 则表示私有仓库搭建成功

    这里私服虽然构建成功,但是我们还要配置docker跟私服的关联,不然docker不会去我们搭建私服拉取镜像

    Docker的中央仓库,Docker私服搭建
  • 「添加私服仓库地址」

    #编辑配置文件
    vi /etc/docker/daemon.json
    #增加仓库配置信息
    # 在daemon.json中添加以下 key,保存退出。此步用于让 docker 信任私有仓库地址
    {"insecure-registries":["192.168.242.128:5000"]}

    配置了私有仓库服务器之后,拉取镜像就会先去私服中拉取,找不到则去中央仓库拉取,跟Maven的工作方式一样的,这里之所有要配置,主要是因为我们用的是HTTP的方式,而docker现在要求用HTTPS

    Docker的中央仓库,Docker私服搭建
  • 「重启docker」

    #重新加载docker配置
    systemctl daemon-reload
    #重启docker
    systemctl restart docker
  • 「查看docker信息确认仓库是否添加」

    docker info
    Docker的中央仓库,Docker私服搭建
  • 「上传镜像」

    # 1、标记镜像打一个tag
    docker tag nginx:1.19.3-alpine 192.168.242.128:5000/nginx:v1
    # 2、上传标记的镜像
    docker push 192.168.242.128:5000/nginx:v1
    # 记得将Ip改为自己的Ip

    #在上传一个tomcat的镜像

    docker tag tomcat:9.0.20-jre8-alpine 192.168.242.128:5000/tomcat:v1
    docker push 192.168.242.128:5000/tomcat:v1
    Docker的中央仓库,Docker私服搭建
  • 「浏览器查看上传的镜像」

    http://192.168.242.128:5000/v2/tomcat/tags/list
    Docker的中央仓库,Docker私服搭建
  • 「从私服拉取镜像」

    docker pull 192.168.242.128:5000/nginx:v1
    Docker的中央仓库,Docker私服搭建

到这里,docker的私服搭建就完成了,我们可以将自己镜像上传到私服中,留待以后使用,但是我们通过浏览器访问的时候,会发现docker私服其实没有界面,只是访问的API,返回一个json,很不方便。所以接下来搭建以下有UI的企业私服。

三、企业私服

前面安装搭建了docker官方私服Registry,接下来企业级镜像库Harbor

3.1 Harbor介绍

「Harbor作为一个企业级私有Registry服务器,提供了更好的性能和安全,提升了用户使用Registry构建和运行环境传输镜像的效率」

虽然Harbor和Registry都是私有镜像仓库的选择,但是Harbor的企业级特性更强,因此也是更多企业级用户的选择。

「Harbor实现了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制,也常常和K8S中的namespace结合使用」

Harbor还提供了图形化的管理界面,我们可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间

「harbor官网地址」

harbor官网地址:
https://goharbor.io/
github官网地址:
https://github.com/goharbor/harbor
官方帮助文档:
https://github.com/goharbor/harbor/blob/v1.9.4/docs/installation_guide.md

在官方帮助文档中有指明了安装harbor的一个硬件要求

硬件资源 最小配置 推荐配置
CPU 2 CPU 4 CPU
内存 4 GB 8 GB
硬盘 40 GB 160 GB
Docker的中央仓库,Docker私服搭建

3.2 Harbor搭建

开发环境大部分采用http方式进行安装;生产环境必须采用https方式安装。

  • 「下载」

    https://github.com/goharbor/harbor

    进入官网后,找到自己要下载的版本进行下载

    Docker的中央仓库,Docker私服搭建

    「下载时,选择全安装包,因为是国外的网络,所以在线安装的话可能会下不下来,所以下载全安装包」

    Docker的中央仓库,Docker私服搭建
  • 「上传」

    将下载的harbor压缩包上传到服务器
  • 「解压harbor压缩包」

    cd /data
    tar zxf harbor-offline-installer-v2.4.1.tgz
  • 「进入安装目录」

    cd harbor
    ls

    「可以看到harbor有几个文件,其中harbor.yml.tmpl是一个harbor的配置文件的模板」

    Docker的中央仓库,Docker私服搭建
  • 「创建配置文件harbor.yml」

    「harbor.yml 为harbor的配置文件」

    cp harbor.yml.tmpl harbor.yml
  • 「修改配置文件harbor.yml」

    vi harbor.yml
  • 「拉取私服镜像」

    #修改私服镜像地址
    hostname: 192.168.242.128
    #修改镜像地址访问端口号
    port: 5000
    #harbor管理员登录系统密码
    harbor_admin_password: Harbor12345
    #修改harbor映射卷目录
    data_volume: /data/harbor/harborVolume
    Docker的中央仓库,Docker私服搭建
  • 「安装harbor并启动」

    # 在harbor目录下执行,执行前,先把docker 在运行的容器先全部删除  
    # docker rm $(docker stop $(docker ps -aq))
    ./install.sh
    Docker的中央仓库,Docker私服搭建
  • 「查看是否启动」

    docker ps -a
    Docker的中央仓库,Docker私服搭建

    「如果Nginx没有启动成功,需要修改一下Nginx的配置」

    执行完./install.sh命令之后在harbor 目录 会新增几个文件

    Docker的中央仓库,Docker私服搭建

    common 目录下是上面 docker 启动的所有容器,在common 的config目录下有一个nginx ,进入Nginx,修改 nginx.conf 配置文件

    Docker的中央仓库,Docker私服搭建
  • 「访问harbor」

    http://192.168.242.128:5000
    username: admin
    password: Harbor12345
    Docker的中央仓库,Docker私服搭建

3.3 添加私服仓库地址

这一步骤跟registry是一样的

  • 「添加私服仓库地址」

    #编辑配置文件
    vi /etc/docker/daemon.json
    #增加仓库配置信息
    # 在daemon.json中添加以下 key,保存退出。此步用于让 docker 信任私有仓库地址
    {"insecure-registries":["私有仓库服务器IP:5000"]}

    配置了私有仓库服务器之后,拉取镜像就会先去私服中拉取,找不到则去中央仓库拉取,跟Maven的工作方式一样的

  • 「重启docker」

    #重新加载docker配置
    systemctl daemon-reload
    #重启docker
    systemctl restart docker
  • 「查看docker信息确认仓库是否添加」

    docker info

2.4 Harbor 的使用

  • 「新建项目」

    在harbor中新建项目,镜像是以项目隔离开的,harbor支持可以给不同的角色分配不同的权限,使用不同项目下面的镜像

    这里我创建一个edwinedu的项目

    Docker的中央仓库,Docker私服搭建
  • 「容器中登录私服」

    docker login -u admin -p Harbor12345 192.168.242.128:5000
    Docker的中央仓库,Docker私服搭建
  • 「上传镜像」

    以上传nginx镜像为例

    #先根据edwinedu项目打一个tag
    docker tag nginx:1.19.3-alpine 192.168.242.128:5000/edwinedu/nginx:v2
    #将tag推送到Harbor 私服中
    docker push 192.168.242.128:5000/edwinedu/nginx:v2
    Docker的中央仓库,Docker私服搭建
  • 「下载镜像」

    在Harbor 私服中选择自己要使用的镜像,点击复制按钮就可以获取该镜像的拉取命令,在docker中执行即可

    docker pull 192.168.242.128:5000/edwinedu/nginx:v2
    Docker的中央仓库,Docker私服搭建
  • 「容器中退出私服」

    docker logout 192.168.242.128:5000
Docker的中央仓库,Docker私服搭建


原文始发于微信公众号(星河之码):Docker的中央仓库,Docker私服搭建

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/60800.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!