使用registry搭建docker私服仓库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fu_huo_1993/article/details/101100402


默认情况下,我们拉取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
  • 在这一步可能会报如下错误
    push 报错
  • 解决方案如下
描述 操作
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

猜你喜欢

转载自blog.csdn.net/fu_huo_1993/article/details/101100402