Docker私服

3 篇文章 0 订阅
2 篇文章 0 订阅

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 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不会去我们搭建私服拉取镜像

  • 添加私服仓库地址

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

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

  • 重启docker

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

    docker info
    

  • 上传镜像

    # 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
    

  • 浏览器查看上传的镜像

    http://192.168.242.128:5000/v2/tomcat/tags/list
    

  • 从私服拉取镜像

    docker pull 192.168.242.128:5000/nginx:v1
    

到这里,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的一个硬件要求

硬件资源最小配置推荐配置
CPU2 CPU4 CPU
内存4 GB8 GB
硬盘40 GB160 GB

3.2 Harbor搭建

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

  • 下载

    https://github.com/goharbor/harbor
    

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

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

  • 上传

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

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

    cd harbor
    ls
    

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

  • 创建配置文件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
    

  • 安装harbor并启动

    # 在harbor目录下执行,执行前,先把docker 在运行的容器先全部删除  
    # docker rm $(docker stop $(docker ps -aq))
    ./install.sh
    

  • 查看是否启动

    docker ps -a
    

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

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

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

  • 访问harbor

    http://192.168.242.128:5000
    username: admin
    password: Harbor12345
    

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 login -u admin -p Harbor12345 192.168.242.128:5000
    

  • 上传镜像

    以上传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
    

  • 下载镜像

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

    docker pull 192.168.242.128:5000/edwinedu/nginx:v2
    

  • 容器中退出私服

    docker logout 192.168.242.128:5000
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值