基于容器安装运行Registry
Docker Registry主要负责镜像仓库的管理
创建并启动一个运行Docker Registry:
docker run -d -p 5000:5000 --restart=always --name myregistry -v /opt/data/registry:/var/lib/registry registry
-v:将主机的本地/opt/data/registry目录绑定到容器/var/lib/registry目录(Docker Registry默认存放镜像文件的位置)中,这样可以实现数据的持久化,将镜像仓库存储到本地文件系统中
-p:设置映射端口,这样访问主机的5000端口就能访问到Registry服务
--restart:设置重启策略,设置为always表示这个容器即使异常退出也会自动重启,保持了Registry服务的持续运行
--name myregistry:将容器命名为myregistry
此时执行docker ps,可以看到registry容器正在运行:
可以执行以下命令获取所有的镜像仓库来测试Docker Registry服务:
curl http://127.0.0.1:5000/v2/_catalog
将镜像上传至自建的docker注册中心
上传镜像之前需要首先针对自建注册中心设置相应的标签:
[主机 : 端口] / 仓库名称 : [标签]
主机可以是自建注册中心的域名或IP地址,端口就是该中心对外提供注册服务的端口
完成之后进行测试:
(hello-world是我之前上传的,与此处无关) 也可以直接使用互联网访问自建注册中心
从自建注册中心下载镜像
这表明下载也没有问题了
配置注册中心地址
默认情况下,注册中心地址使用localhost或127.0.0.1是没有问题的,如果使用主机的域名或IP地址就会报出”http:server gave HTTP response to HTTPS client“这样的错误,这是因为Docker从1.3X之后,访问Docker注册中心默认使用的是HTTPS,但是搭建的私有注册中心默认使用的是HTTP
最简单的解决方案是修改Docker客户端的/etc/docker/daemon.json文件,将要使用的注册中心域名或IP地址添加到insecure-registries列表中,以允许Docker客户端与该列表中的注册中心进行不安全通信
vim /etc/docker/daemon.json
进入文件之后,在花括号里面加上(如果该文件没有花括号,则还要加上花括号):
”insecure-registries“:["主机的IP地址:5000"]
然后重启docker服务(若此步重启报错,可以就是上一步配置文件时出错,要返回文件查看)
systemctl restart docker
下面再按照这个IP地址上传或者下载就可以了
同时127.0.0.1也还是可以使用的,其实和配置的主机IP地址是同一个注册中心,可以通过浏览器打开网站验证