使用registry搭建docker私服仓库
使用registry搭建docker私服仓库
默认情况下,我们拉取docker镜像大多都是从 dockerhub 上拉取的,但有些时候有些镜像是我们自己内部构建的,不想公开给别人使用,那么这个时候就需要构建一个自己的镜像私服了,而 docker 正好提供了,registry镜像,正好可以用来构建自己的私服。
一、拉取 registry镜像
docker pull registry
二、根据镜像启动一个容器
1、创建一个数据卷
docker volume create registry-huan
2、启动容器
docker run -d -p 5000:5000 --restart=always -v registry-huan:/var/lib/registry --name registry-huan registry
-p 5000:5000
将容器内部的5000端口暴露给外部的5000端口--restart=always
表示遇到错误自动重启--name
执行启动后容器的名字-v registry-huan:/var/lib/registry
表示将容器内部的数据挂载到自己的数据卷registry-huan
中
三、随机访问一个私服的接口,看是否可以返回数据
http://47.101.130.164:5000/v2/_catalog
注意:
这个 repositories
中之所以会存在数据,是因为我之前上传一个 hello-world 的镜像
四、推送一个镜像到自己的私服中
1、拉取一个 hello-world 镜像
docker pull hello-world
2、给这个镜像打一个 tag
docker tag hello-world 47.101.130.164:5000/hello-world
注意:
1、47.101.130.164
这个为我 registry 所在的机器的ip地址
2、5000
为启动 registry 对外暴露的端口
3、推送镜像到自己的私服中
docker push 47.101.130.164:5000/hello-world
- 在这一步可能会报如下错误
- 解决方案如下
描述 | 操作 |
---|---|
1、在 vim /usr/lib/systemd/system/docker.service文件中增加如下配置 | ![]() --insecure-registry 47.101.130.164:5000 |
2、重新启动docker | systemctl daemon-reload systemctl restart docker.service |
3、再次执行 docker push xxx 就会发现可以推送了 |
4、从私服中拉取镜像
docker pull 47.101.130.164:5000/hello-world-new
五、注意事项
1、如果要推送到自己的私服中,那么在给镜像打tag时需要以 ip[域名]:端口
作为前缀
2、如果推送镜像失败,可能需要修改 /usr/lib/systemd/system/docker.service
配置文件
3、47.101.130.164
为我docker registry 所在的服务器的地址
4、本地操作使用docker的版本为 19.03.1
[root@huan1993 ~]# docker -v
Docker version 19.03.1, build 74b1e89
本文来自博客园,作者:huan1993,转载请注明原文链接:https://www.cnblogs.com/huan1993/p/15416150.html