前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4. Docker 私有仓库搭建

4. Docker 私有仓库搭建

作者头像
用户7798898
发布2020-09-27 16:52:57
6480
发布2020-09-27 16:52:57
举报

环境:

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

master: 192.168.1.106

nodes1: 192.168.1.104

nodes2: 192.168.1.105

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

一. docker的Registry的安装和配置

选择将nodes1作为镜像仓库.

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

代码语言:javascript
复制
docker pull registry

2. 启动容器

代码语言:javascript
复制
docker run -p 5000:5000 -v /home/registry_images:/var/lib/registry -d --restart=always registry

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

二. registry的使用

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

代码语言:javascript
复制
/etc/docker/daemon.json
代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
systemctl daemon-reload
systemctl restart docker

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

代码语言:javascript
复制
领取nginx镜像
docker pull nginx
改名
docker tag nginx 192.168.1.104:5000/nginx:test

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

代码语言:javascript
复制
docker push 192.168.1.104:5000/nginx:test

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

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

代码语言:javascript
复制
{
  "insecure-registries":["192.168.1.104:5000"],
  "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"]
}

重启docker

代码语言:javascript
复制
systemctl daemon-reload
systemctl restart docker

遇到的问题:

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

查询日志

代码语言:javascript
复制
cd /var/log

tail -200f messages

错误信息如下:

代码语言:javascript
复制
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. 没有关闭防火墙

代码语言:javascript
复制
setenforce 0   //关闭防火墙

查询防火墙

代码语言:javascript
复制
getenforce

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

有两个方法

方法一: 去镜像仓库地址查询:
代码语言:javascript
复制
cd /home/registry_images

详细目录如下:

代码语言:javascript
复制
cd /home/registry_images/docker/registry/v2/repositories

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

方法二: 通过接口查询
代码语言:javascript
复制
curl -XGET http://192.168.1.104:5000/v2/_catalog
代码语言:javascript
复制
{"repositories":["nginx"]}

6. 查询仓库的tag标签

代码语言:javascript
复制
curl -XGET http://192.168.1.104:5000/v2/nginx/tags/list
代码语言:javascript
复制
{"errors":[{"code":"NAME_UNKNOWN","message":"repositoryname not known toregistry","detail":{"name":"image_name"}}]}
代码语言:javascript
复制
curl -XGET http://192.168.1.104:5000/v2/nginx/tags/list
代码语言:javascript
复制
{"name":"nginx","tags":["latest"]}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境:
  • 一. docker的Registry的安装和配置
    • 1. 在node节点上, 获取并安装registry镜像
      • 2. 启动容器
      • 二. registry的使用
        • 1. 修改master机器上的registry容器为所在的宿主机
          • 2. 重启docker
            • 3. 下载一个nginx并上传到Registry仓库
              • 4. 下面在其他master和node上做同样的操作. 修改/etc/docker/daemon.json文件
              • 遇到的问题:
                • 5. 查询上传到仓库的镜像
                  • 方法一: 去镜像仓库地址查询:
                  • 方法二: 通过接口查询
                • 6. 查询仓库的tag标签
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档