docker registry搭建私仓
准备工作
- 基于centos并安装好docker环境的主机一台(192.168.65.128)作为私仓服务器
- 基于centos并安装好docker环境的主机一台(192.168.65.130)作为测试机,用来测试提交、拉取私仓服务器的镜像
正式搭建
私仓服务器(192.168.65.128)
-
下载镜像registry
docker pull registry
-
运行registry
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
参数说明:
- -itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
- -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
- -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
- –restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
- –name registry:创建容器命名为registry,你可以随便命名;
- registry:latest:这个是刚才pull下来的镜像。
-
查看私仓中的所有镜像(此时仓库没有镜像,所以得到的是个空)
curl http://127.0.0.1:5000/v2/_catalog
可得到数据:
{“repositories”:[]}
测试机(192.169.65.130)
-
添加私仓服务器地址
vim /etc/docker/daemon.json
{ "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "192.168.65.128:5000"] }
参数说明
insecure_registries:这里填写的是私仓服务器地址
重启docker服务
systemctl restart docker
上传镜像到私仓服务器(192.168.65.128)
-
拉取hello-world镜像(此镜像为docker hub镜像)
docker pull hello-world
-
将hello-world镜像打标签
docker tag hello-world:latest 192.168.65.128:5000/hello:v1
格式为:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
参数说明:
- SOURCE_IMAGE --> hello-world
- [:TAG] --> latest
- TARGET_IMAGE --> 192.168.65.128:5000/hello
- [:TAG] --> v1
注意:
192.168.65.128:5000/hello为私仓服务器(192.168.65.128)地址加你要上传到服务器的镜像的名字(此名字,可任取)
-
上传镜像hello:v1到私仓服务器(192.168.65.128)
docker push 192.168.65.128:5000/hello:v1
-
查看私仓服务器(192.168.65.128)是否已经有了 hello:v1镜像
curl http://127.0.0.1:5000/v2/_catalog
得到结果:
{“repositories”:[“hello”]}
从私仓服务器(192.168.65.128)拉取镜像
-
删除测试机(192.168.65.130)上的hello:v1镜像
docker rmi 192.168.65.128:5000/hello:v1
-
拉取私仓服务器(192.168.65.128)上的镜像
docker pull 192.168.65.128:5000/hello:v1