使用registry搭建docker私服仓库
2023-02-18 16:28:02 时间
使用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
相关文章
- ChatGPT初体验|在 ChatGPT 中运行容器或Kubernetes?
- [Briefings in Bioinformatics|论文简读]NetTDP:基于互换的真实发现比例的差异性共表达网络分析
- [IEEE Trans Med Imaging | 论文简读] Av-CasNet:OCT血管成像中的微血管全自动分割与区分
- [Information Sciences | 论文简读] DA-Net:用于多变量时间序列分类的双注意力网络
- 如何验证Kubernetes YAML Files
- 利用php脚本+redis,生成CSV测试文件,重复率为20%
- [MySQL]索引
- [MySQL]brew 安装 配置 操作 mysql(中文问题)
- [MySQl]MySQL忘记密码
- [MySQL]增加用户 授权 远程登录
- [编程题目]泥塑课
- How can I learn to program?
- 学渣的心酸(求职篇)
- 时间复杂度问题
- 测试Flask应用_学习笔记
- Flask模板_学习笔记
- 初学Flask(1)
- 今天安装了麒麟系统
- 看球时的随笔——“如何掌握新的知识”
- str()和repre()的区别