Docker私有仓库的搭建和界面化管理详解

 更新时间:2019年12月17日 10:05:23   作者:LeoZhanggg  
这篇文章主要给大家介绍了关于Docker私有仓库的搭建和界面化管理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

一、关于Registry

官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。

但是有时候我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。

 Registry在github上有两份代码:老代码库和新代码库。老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发。

 从2.0版本开始就到在新代码库进行开发,新代码库是采用go语言编写,修改了镜像id的生成算法、registry上镜像的保存结构,大大优化了pull和push镜像的效率。

 官方在Docker hub上提供了registry的镜像,我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。

二、搭建Registry

首先搜索并拉取镜像

docker search registry    # 建议先搜索一下,可以看一下相关的镜像,说不定哪天就有更好的镜像了
docker pull registry    # 标签可以不加,因为当前最新就是v2

运行一个registry容器

docker run -d \  # 后台运行
--name registry-srv \ # 指定容器名
--restart=always \ # 设置自动启动
-p 5000:5000 \  # 端口映射宿主机,通过宿主机地址访问
-v /opt/zwx-registry:/var/lib/registry \ # 把镜像存储目录挂载到本地,方便管理和持久化
-v /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml \ # 把配置文件挂载到本地,方便修改和保存
registry

srv-config.yml内容如下

标红delete参数设置为true,是为了让仓库支持删除功能。默认没有这个参数,也就是不能删除仓库镜像。

version: 0.1
log:
 fields:
 service: registry
storage:
 delete:
 enabled: true
 cache:
 blobdescriptor: inmemory
 filesystem:
 rootdirectory: /var/lib/registry
http:
 addr: :5000
 headers:
 X-Content-Type-Options: [nosniff]
health:
 storagedriver:
 enabled: true
 interval: 10s
 threshold: 3

注册https协议(否则push安全认证过不去)

需要通过本地仓库下载镜像,均需要配置  

vim /etc/docker/daemon.json        # 默认无此文件,需自行添加,有则追加以下内容。
{ "insecure-registries":["xx.xx.xx.xx:5000"] }  # 指定IP地址或域名

systemctl daemon-reload # 守护进程重启
systemctl restart docker # 重启docker服务

镜像上传与下载

docker push xx.xx.xx.xx:5000/nginx  # 一定要注明仓库地址,否则会报错
docker pull xx.xx.xx.xx:5000/nginx

查看仓库镜像信息

curl -XGET http://xx.xx.xx.xx:5000/v2/_catalog    # 查看仓库镜像列表(也可以通过windows浏览器打开查看)
curl -XGET http://xx.xx.xx.xx:5000/v2/image_name/tags/list  # 查看指定应用镜像tag

三、搭建Registry web

首先搜索并拉取镜像

docker search docker-registry-web
docker pull hyper/docker-registry-web    # 这个镜像用的人较多

运行一个registry web容器

docker run -d \   # 后台运行
--name registry-web \ # 指定容器名
--restart=always \  # 设置自动启动
-p 8000:8080 \   # 端口映射宿主机,通过宿主机地址访问
-v /opt/zwx-registry/web-config.yml:/etc/config.yml \ # 把配置文件挂载到本地,方便修改和保存
hyper/docker-registry-web

web-config.yml文件内容如下

标红readonly参数设置为false,是为了web页面可以显示删除按钮。默认是true,只读状态,没有删除按钮,只能查看。

registry:
 # Docker registry url
 url: http://10.88.77.32:5000/v2
 # Docker registry fqdn
 name: localhost:5000
 # To allow image delete, should be false
 readonly: false
 auth:
 # Disable authentication
 enabled: false

部署完成后,浏览器打开仓库UI地址即可查看到所有应用镜像


选择任意应用镜像库,即可查看到该镜像的所有tag信息,每个tag后面都有个删除按钮(默认没有,配置参考config.yml)

 

四、快捷部署

集群模式可以通过docker stack快速部署registry和registry web。

新建配置文件srv-config.yml、web-config.yml放到指定路径,再新建docker-compose.yml文件,执行命令即可。

docker stack deploy -c docker-compose.yml RGT
version: '3.7'      # docker stack 需要是3.0以上版本
services:
 registry-srv:      # 服务名
 image: registry
 
 ports:         # 映射端口
  - 5000:5000
  
 volumes:        # 挂载镜像路径和配置文件,注意修改路径与实际一致
  - /opt/zwx-registry:/var/lib/registry
  - /opt/zwx-registry/srv-config.yml:/etc/docker/registry/config.yml
  
 deploy:        # 设置单任务,并约束主节点运行
  mode: replicated
  replicas: 1
  placement:
  constraints:
   - node.role == manager
  
 registry-web:      # 服务名  
 image: hyper/docker-registry-web
 
 ports:        # 映射端口
  - 8000:8080
 
 volumes:      # 挂载配置文件,注意修改路径与实际一致
  - /opt/zwx-registry/web-config.yml:/conf/config.yml
  
 environment:
  - REGISTRY_URL=http://registry-srv:5000/v2
  - REGISTRY_NAME=localhost:5000
 
 deploy:        # 设置单任务,并约束主节点运行
  mode: replicated
  replicas: 1
  placement:
  constraints:
   - node.role == manager

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • docker容器动态添加端口号的方法

    docker容器动态添加端口号的方法

    这篇文章主要介绍了docker容器动态添加端口号的方法,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • docker部署crownblog项目到阿里云的方法步骤

    docker部署crownblog项目到阿里云的方法步骤

    这篇文章主要介绍了docker部署crownblog项目到阿里云的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • docker nginx ssl设置的实现步骤

    docker nginx ssl设置的实现步骤

    本文主要介绍了docker nginx ssl设置的实现步骤,使用docker运行nginx,配置代理,和ssl设置,进行https访问,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • docker启动mysql5.7服务详细说明

    docker启动mysql5.7服务详细说明

    这篇文章主要给大家介绍了关于docker启动mysql5.7服务的相关资料,文中通过代码示例介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Docker制作Python运行环境基础镜像的方法步骤

    Docker制作Python运行环境基础镜像的方法步骤

    这篇文章主要介绍了Docker制作Python运行环境基础镜像的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker-compose如何安装skywalking

    docker-compose如何安装skywalking

    这篇文章主要介绍了docker-compose如何安装skywalking问题,
    2024-01-01
  • Docker容器内应用服务自启动的方法示例

    Docker容器内应用服务自启动的方法示例

    这篇文章主要介绍了Docker容器内应用服务自启动的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • docker启动rabbitmq以及使用方式详解

    docker启动rabbitmq以及使用方式详解

    RabbitMQ是一个由erlang开发的消息队列,下面这篇文章主要给大家介绍了关于docker启动rabbitmq以及使用的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 在Linux系统中安装Docker的过程

    在Linux系统中安装Docker的过程

    这篇文章主要介绍了如何在Linux系统中安装Docker,其实安装docker真的很简单,只需要几条命令就可以完成了,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • docker entrypoint入口文件详解

    docker entrypoint入口文件详解

    这篇文章主要介绍了docker entrypoint入口文件详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论