zoukankan      html  css  js  c++  java
  • 4. Docker 私有仓库搭建

    环境:

    有一个集群, 里面有三台服务器

    master: 192.168.1.106

    nodes1: 192.168.1.104

    nodes2: 192.168.1.105

    操作系统: 使用的MacOS, windows同样有效


     

    一. docker的Registry的安装和配置

    选择将nodes1作为镜像仓库. 

    1. 在node节点上, 获取并安装registry镜像

    docker pull registry

    2. 启动容器

    docker run -p 5000:5000 -v /home/registry_images:/var/lib/registry -d --restart=always registry

     这里将registry挂载到了本地home目录, 避免docker重启后, 镜像丢失

    二. registry的使用

    1. 修改master机器上的registry容器为所在的宿主机

    /etc/docker/daemon.json
    {
      "insecure-registries":["192.168.1.104:5000"], //修改为registry所在容器的宿主机
      "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"]
    }

    "insecure-registries": 含义是, 192.168.1.104不是一个安全的http请求, 但请信任这个仓库地址.

    我的registry在node节点上, node的ip是192.168.1.104

    2. 重启docker

    systemctl daemon-reload
    systemctl restart docker

    3. 下载一个nginx并上传到Registry仓库 

    领取nginx镜像
    docker pull nginx
    改名
    docker tag nginx 192.168.1.104:5000/nginx:test

    尝试把 192.168.1.104:5000/nginx:test上传到我们的Registry仓库

    docker push 192.168.1.104:5000/nginx:test

     可以成功push, 说明我们的仓库是创建成功了.

     4. 下面在其他master和node上做同样的操作. 修改/etc/docker/daemon.json文件

    {
      "insecure-registries":["192.168.1.104:5000"],
      "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"]
    }

    重启docker

    systemctl daemon-reload
    systemctl restart docker

    遇到的问题:

    所有设置都没问题, 但是上传就是失败

     查询日志

    cd /var/log
    
    tail -200f messages

    错误信息如下:

    Attempting next endpoint for push after error: Get https://192.168.198.142:5000/v2/: http: server gave HTTP response to HTTPS client"

    出现这个问题有两种情况

    1. 没有配置"insecure-registries":["192.168.1.104:5000"],  可以确定我是配置了的, 上面有具体方法

    2. 没有关闭防火墙

    setenforce 0   //关闭防火墙

    查询防火墙

    getenforce

    5. 查询上传到仓库的镜像

    有两个方法

    方法一: 去镜像仓库地址查询: 

    cd /home/registry_images

    详细目录如下:

    cd /home/registry_images/docker/registry/v2/repositories

    这个目录是我设置的镜像仓库在本地的挂载目录. 

    方法二: 通过接口查询

    curl -XGET http://192.168.1.104:5000/v2/_catalog

    {"repositories":["nginx"]}

    6. 查询仓库的tag标签

    curl -XGET http://192.168.1.104:5000/v2/nginx/tags/list

    {"errors":[{"code":"NAME_UNKNOWN","message":"repositoryname not known toregistry","detail":{"name":"image_name"}}]}

    curl -XGET http://192.168.1.104:5000/v2/nginx/tags/list

    {"name":"nginx","tags":["latest"]}

  • 相关阅读:
    shell中定义变量用双引号和单引号以及不用引号的区别
    如何优雅的解决mac安装zsh不执行.bash_profile
    Spring在非web应用中关闭IoC容器 (registerShutdownHook)
    【Quartz】配置最简单的集群
    【Quartz】将定时任务持久化到数据库
    Mysql字符串字段判断是否包含某个字符串的3种方法
    函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法
    MySQL字符串函数substring:字符串截取
    logback logback.xml常用配置详解 <filter>
    logback 常用配置详解<appender>
  • 原文地址:https://www.cnblogs.com/ITPower/p/12873953.html
Copyright © 2011-2022 走看看