Docker Registry工具也是个docker镜像,它的功能就是用于创建私服版本个人企业版的docker hub
- 上传我们下载好的 registry_1.0.0.tar 到服务器上,开始安装registry(可以连接外网的话,可以直接docker pull registry)
执行docker load -i registry_1.0.0.tar,镜像tar包导入docker镜像
- 执行docker images -a,可以看到镜像已存在
- 通过上一步我们已经具有了Registry镜像了,这里需要run该镜像,构建一个本地私有服务器容器
执行:docker run -d -p 5000:5000 -v /opt/data/registry/:/tmp/registry --privileged=true registry
上面指令中参数的具体含义:
(1)-d:设置Reigistry容器后台运行模式;
(2)-p:网络端口映射,指定容器端口绑定到主机相应主机端口;默认情况下Docker开放了5000端口(Python Flask端口)映射到主机端口32769上,这里的-p 5000:5000是将Docker内部默认端口映射到主机端口5000上,第一个5000是主机端口;第二5000是容器端口。
(3)-v:添加数据卷,格式为:-v /宿主机目录:/容器内目录。需要注意的是,指令执行后会自动创建文件夹。执行完上面指令后,在本地的//opt/data/registry/目录下创建了数据卷
然后可以看到在registry容器中的/tmp文件夹下就有了一个registry文件夹,至此说明运行私有库Registry成功。
(4)--privileged=true:Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied的解决办法。
(5)registry:docker registry镜像。
- 修改配置/etc/docker/daemon.json,实现docker push xx镜像到个人镜像仓库
修改配置文件使docker支持http,由于docker的私服库作了安全加固,通常是不支持http的推送,所以这里需要配置取消该限制。
第一步:执行 vi /etc/docker/daemon.json
{
"insecure-registries": ["0.0.0.0:5000"]
}
第二步:systemctl daemon-reload & systemctl restart docker.service
第三步:docker start 镜像仓库id(重启docker服务之后,需要重新start容器)
此时私服镜像应该就好了
可以测试一下:curl -XGET http://172.32.155.41:5000/v2/_catalog。
第四步:将新镜像修改为符合私服规范的Tag
规则:docker tag 镜像ID或镜像名:Tag Host:Port/Repository:Tag
先打tag:docker tag registry 172.32.155.41:5000/registry:1.0.0
然后就可以push到私仓:docker push 172.32.155.41:5000/registry:1.0.0