目录
1. 下载并运行Docker Registry
[root@docker ~]# docker run -d -p 4000:5000 -v /root/docker_host:/var/lib/registry --privileged=true registry
Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete
0d96da54f60b: Pull complete
5b27040df4a2: Pull complete
e2ead8259a04: Pull complete
3790aef225b9: Pull complete
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
0e405de4f567d146abb935416dc2325f8ddc0dad0c817577ed753e87255175a6
[root@docker ~]#
参数说明:
- 默认情况镜像仓库的目录是容器内部的/var/lib/registry。用-v参数指定容器卷后,将容器的/var/lib/registry目录挂载到宿主机的/root/docker_host目录
- -p:小写p指定了端口映射。容器内的registry服务的端口是5000,访问宿主机的4000端口,就会被映射到该容器的5000端口
- –privileged=true:因为使用了容器卷,默认情况下容器内的root用户,相对于宿主机来说只是一个普通用户,是没有权限挂载目录的。设置为true,让容器内的root用户拥有宿主机的root用户权限
2. 查看registry服务的仓库
[root@docker ~]# curl -XGET http://192.168.23.31:4000/v2/_catalog
{"repositories":[]}
[root@docker ~]#
3. 通过打标签的方式, 将镜像修改成符合私有镜像仓库规范的tag
[root@docker ~]# docker tag centos:latest 192.168.23.31:4000/my-centos:8.8
[root@docker ~]#
4. 修改配置文件,使docker支持通过http协议推送镜像
添加insecure-registries参数,然后重启docker,然后启动registry容器
[root@docker ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["192.168.23.31:4000"]
}
[root@docker ~]#
[root@docker ~]# systemctl restart docker
[root@docker ~]#
5. 推送镜像
[root@docker ~]# docker push 192.168.23.31:4000/my-centos:8.8
The push refers to repository [192.168.23.31:4000/my-centos]
74ddd0ec08fa: Pushed
8.8: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
[root@docker ~]#
6. 再次查看registry服务的仓库
[root@docker ~]# curl -XGET http://192.168.23.31:4000/v2/_catalog
{"repositories":["my-centos"]}
[root@docker ~]#
7. 拉取镜像
[root@docker ~]# docker pull 192.168.23.31:4000/my-centos:8.8
8.8: Pulling from my-centos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for 192.168.23.31:4000/my-centos:8.8
192.168.23.31:4000/my-centos:8.8
[root@docker ~]#