1. Registry介绍
官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,Docker hub私有镜像个数限制,同时国内访问速度受限制。
官方在Docker hub上提供了registry的镜像,我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。
2. Registry的部署
- 编写docker-compse 脚本compose-registry.yml :
registry:
container_name: registry
image: registry:latest
port:
- 5000:5000
volumes:
- /opt/registry:/var/lib/registry
restart: always
- 运行如下命令:
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker-compose -f compose-registry up -d registry
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10cf04d93d95 registry:latest "/entrypoint.sh /etc…" 6 minutes ago Up 6 minutes 0.0.0.0:5000->5000/tcp registry
- registry容器启动后,打开浏览器输入http://ip_add:5000/v2/,看到下面情况说明registry运行正常
访问:
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# curl -XGET http://ip_add:5000
{}[root@iZm5ee3t4tj14j1vdg6oozZ ~]#
- 测试上传镜像到Registry
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker tag hello-world:latest ip_add:5000/hello-world:1.0
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest f32a97de94e1 8 months ago 25.8MB
ip_add:5000/hello-world 1.0 fce289e99eb9 10 months ago 1.84kB
hello-world latest fce289e99eb9 10 months ago 1.84kB
registry 2.5.0 c6c14b3960bd 3 years ago 33.3MB
- 上传j镜像到Registry私有仓库
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# docker push 115.28.137.160:5000/hello-world:1.0
The push refers to repository [ip_add:5000/hello-world]
af0b15c8625b: Layer already exists
1.0: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
注意:
可能会出现无法push镜像到私有仓库的问题。提示:
这是因为我们启动的registry服务不是安全可信赖的。这时需要修改客户端docker的配置文件/etc/docker/daemon.json,添加下面蓝色的内容(registry服务地址):
{
“insecure-registries”: [“x.x.x.x:5000”]
}
修改好之后需要重启Docker服务才能生效,执行命令:systemctl restart docker ,再push即可
push成功之后,查看本地/opt/registry目录下已经有了刚推送上来的registry镜像,也可以在浏览器中输入http://ip_add:5000/v2/_catalog
[root@iZm5ee3t4tj14j1vdg6oozZ ~]# curl -XGET http://ip_add:5000/v2/_catalog
{"repositories":["hello-world"]}