Docker——Registry搭建私有镜像仓库
前言
在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。
所以,我们也可以带上仓库地址去拉取镜像,如:docker pull jenkins
在公司中使用 Docker,我们不可能把商业项目上传到公共仓库中,所以要搭建私有仓库。
1.部署仓库
准备1台安装好docker的服务器 (主机名为registry):docker私有仓库服务器,运行registry容器。
- 下载镜像registry
docker pull registry:2.6.0
注:这里指定了2.6.0版本的,因为最新版本的会有问题,文章后面会提到
- 查看镜像registry
docker images
- 运行registry容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.6.0
参数说明
-d:在后台运行;
-v:把宿主机的/opt/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:2.6.0:这个是刚才pull下来的镜像;
- 查看镜像仓库中的镜像
curl http://127.0.0.1:5000/v2/_catalog
注:现在是空的,因为才刚运行,里面没有任何镜像内容。
2.测试仓库
准备1台安装好docker的服务器,在这台服务器上下载一个测试镜像busybox,然后上传到registry服务器进行测试。
- 下载镜像whalesay
docker pull docker/whalesay
- 查看镜像whalesay
docker images
- 为镜像打标签
docker tag docker/whalesay 10.0.29.22:5000/cwx/whalesay:v1
参数说明
docker/whalesay 这是源镜像,也是刚才pull下来的镜像文件;
10.0.29.22:5000/cwx/whalesay:v1:这是目标镜像,也是registry私有镜像服务器的IP地址和端口;
- 上传到镜像服务器
docker push 10.0.29.22:5000/cwx/whalesay:v1
1、注意了,如果这里报以下错(CentOS 7):
解决方法:需要https的方法才能上传,我们可以修改docker配置文件vi /etc/docker/daemon.json
添加 insecure-registries
配置信息来解决:
[root@node ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
//关键配置项,将仓库将入到不安全的仓库列表中
"insecure-registries": [ "10.0.29.22:5000"]
}
然后重启docker服务:
systemctl daemon-reload
systemctl restart docker
2、注意了,如果这里报以下错(CentOS 6.5):
则在/etc/sysconfig/docker文件添加以下选项:
注:上面的IP映射的就是10.0.29.22:5000
然后重启docker服务:
service docker restart
再次上传镜像,【registry版本2.7.0或更高】会报以下的错误:
查看registry服务器容器的日志:
docker logs -f -t --since="2020-01-15" --tail=500 registry #(其中 -f 为查看实时日志, -t为时间 --since为从何时起)
解决方法:版本问题,把registry版本降到2.6.0或以下。
镜像上传成功结果如下:
- 测试下载镜像
先删除本地的镜像:
docker rmi 10.0.29.22:5000/cwx/whalesay:v1
再从搭建好的仓库中下载镜像:
docker pull 10.0.29.22:5000/cwx/whalesay:v1
- 列出所有镜像
curl http://10.0.29.22:5000/v2/_catalog
- 列出cwx/whalesay镜像有哪些tag
curl http://10.0.29.22:5000/v2/cwx/whalesay/tags/list
3.删除镜像
官方推荐删除方案
registry默认配置不允许删除
删除需要在启动时指定: -e REGISTRY_STORAGE_DELETE_ENABLED=true
docker run -d -e REGISTRY_STORAGE_DELETE_ENABLED=true -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.6.0
删除镜像操作
1)找出你想要的镜像名称的tag
curl <protocol>://<registry_host>/v2/<镜像名>/tags/list
例如:
curl http://10.0.29.104:5000/v2/ucop/tags/list
2) 拿到digest_hash参数
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X GET http://<仓库地址>/v2/<镜像名>/manifests/<tag>
例如:
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X GET http://10.0.29.104:5000/v2/ucop/manifests/dev-yc_1
3)复制digest_hash
Docker-Content-Digest: <digest_hash>
4)删除清单
curl -I -X DELETE <protocol>://<registry_host>/v2/<repo_name>/manifests/<digest_hash>
例如:
curl -I -X DELETE http://10.0.29.104:5000/v2/ucop/manifests/sha256:3dcf7bdec83462c44c1d717dc0c76c56067f966dc4706a2e8d16eb45261a5985
registry删除镜像时,仅删除索引,无法清理文件
要真正删除文件系统内的文件,需执行以下垃圾回收命令:
docker exec -it <registry_container_id> bin/registry garbage-collect <path_to_registry_config>
例如:
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
注:注意2.4版本以上的registry才有此功能
简易版删除
1)打开镜像的存储目录,如有-V操作打开挂载目录也可以,删除镜像文件夹
docker exec <容器名> rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>
2)执行垃圾回收操作
docker exec -it <registry_container_id> bin/registry garbage-collect <path_to_registry_config>
注:注意2.4版本以上的registry才有此功能
Docker——Registry搭建私有镜像仓库的更多相关文章
- docker之搭建私有镜像仓库和公有仓库
一.搭建私有仓库 1.docker pull registry #下载registry镜像并启动 2. docker run -d -v /opt/registry:/var/lib/registry ...
- 搭建docker镜像仓库(一):使用registry搭建本地镜像仓库
目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3. ...
- [转]Ubuntu18.04下使用Docker Registry快速搭建私有镜像仓库
本文转自:https://blog.csdn.net/BigData_Mining/article/details/88233015 1.背景 在 Docker 中,当我们执行 docker pull ...
- 【Docker】(4)搭建私有镜像仓库
[Docker](4)搭建私有镜像仓库 说明 1. 这里是通过阿里云,搭建Docker私有镜像仓库. 2. 这里打包的镜像是从官网拉下来的,并不是自己项目创建的新镜像,主要测试功能 一.搭建过程 首先 ...
- 使用docker Registry快速搭建私有镜像仓库
当我们执行docker pull xxx的时候,docker默认是从registry.docker.com这个地址上去查找我们所需要的镜像文件,然后执行下载操作.这类的镜像仓库就是docker默认的公 ...
- 详解docker实战之搭建私有镜像仓库 - kurbernetes
1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...
- 搭建私有镜像仓库registry 2.0
搭建 docker run -d -p 5000:5000 --restart=always --name registry2 registry:2 就可以将自己的镜像 push到这个私有的镜像仓库 ...
- [Docker]Harbor部署私有镜像仓库
Harbor部署私有镜像仓库 认识: Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器. 部署环境: CentOS7 Python2.7.5 Docker CE ...
- Docker Registry搭建私有仓库
利用Registry镜像搭建Docker私有仓库遇到了很多坑,说来也是找到的资料都是杂而不精的东西,所以也没少走了弯路,现在回过头看去感觉好多坑还是别人给挖的··· 不过努力的最终结果还是好的,因为找 ...
随机推荐
- "Unmapped Spring configuration files found.Please configure Spring facet."解决办法
最近在学习使用IDEA工具,觉得与Eclipse相比,还是有很多的方便之处. 但是,当把自己的一个项目导入IDEA之后,Event Log提示"Unmapped Spring configu ...
- 解决JDK9以上的非法反射访问警告
1 问题描述 JDK9以上很多库都有这种非法反射访问的警告,比如protostuff: 解决方法两个: JDK降级 添加JVM参数 2 原因 降到JDK8能解决以上问题. 但是这不是本文的重点. 先说 ...
- 曾侯乙编钟引发的遐想之Java设计模式:状态模式
目录 示例 简单例子 改进代码 状态模式 定义 意图 主要解决问题 何时使用 优缺点 曾侯乙编钟 状态模式-命令模式-策略模式 示例 一个类对外提供了多个行为,同时该类对象有多种状态,不同状态下对外的 ...
- matlab文件管理
当前文价夹浏览器以及路径管理器 在主页面左侧有单独的窗口进行显示,可以显示当前目录下的文件并提供文件搜索功能. 搜索路径 搜索先后步骤 输入字符串"polyfit" (1)检查 ...
- Day12_62_线程的生命周期
线程的生命周期 要实现多线程,必须在主线程中创建新的线程对象. 任何线程一般都具有五种状态,即创建,就绪,运行,阻塞,终止(消亡) 新建状态:在程序中创建了一个新的线程对象后,新的线程对象便处于新建状 ...
- OO Unit4总结 & 结课总结
OO Unit4总结 & 结课总结 OO课Unit4 UML解析应用技术回顾 BUAA.1823.邓新宇 2020/6/19 总结本单元三次作业的架构设计 本单元的架构设计主要是两方面. 一方 ...
- day-25-类的继承顺序-父类对子类的约束-多态-队列和栈
一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...
- php 简易日志函数应用 debug_backtrace()
1 public static function writeILogs($datas) 2 { 3 $bt = debug_backtrace(); 4 $caller = array_shift($ ...
- 逆向工程第005篇:跨越CM4验证机制的鸿沟(下)
一.前言 本文是逆向分析CM4系列的最后一篇,我会将该游戏的序列号验证机制分析完毕,进而编写出注册码生成器. 二.分析第二个验证循环 延续上一篇文章的内容,来到如下代码处: 图1 上述代码并没有特别需 ...
- Burpsuite工具的使用
目录 Burpsuite Proxy代理模块 Repeater模块(改包,重放) Intruder模块(爆破) Target模块 position模块 Payloads模块 Options模块 一处爆 ...