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"]}

 

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...