Docker学习笔记 — Docker私有仓库搭建
2019独角兽企业重金招聘Python工程师标准>>>
和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。
使用私有仓库有许多优点:
- 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
- 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
接下来我们就大致说一下如何在本地搭建私有仓库。
目前Docker Registry已经升级到了v2,最新版的Docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。此文档是在v1的基础上写的,如果需要安装registry v2,只需下载registry:2.2即可,或者可以下载后面的安装脚本运行安装。
环境准备
环境:两个装有Docker的Ubuntu虚拟机
虚拟机一:192.168.112.132 用户开发机
虚拟机二:192.168.112.136 用作私有仓库
此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。
搭建私有仓库
首先在136机器上下载registry镜像
$ sudo docker pull registry
下载完之后我们通过该镜像启动一个容器
$ sudo docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
可以看到我们启动了一个容器,地址为:192.168.112.136:5000。
测试
接下来我们就要操作把一个本地镜像push到私有仓库中。首先在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
$ sudo docker pull busybox
接下来修改一下该镜像的tag。
$ sudo docker tag busybox 192.168.112.136:5000/busybox
接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 192.168.112.136:5000/busybox
可以看到push失败,具体错误如下:
2015/01/05 11:01:17 Error: Invalid registry endpoint https://192.168.112.136:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.112.136:5000/ca.crt
- 1
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改132机器的配置)Ubuntu下配置文件地址为:/etc/init/docker.conf,在其中增加–insecure-registry 192.168.112.136:5000如下所示:
$ sudo vi /etc/init/docker.conf
修改完之后,重启Docker服务。
$ sudo restart docker
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。
$ sudo docker push 192.168.112.136:5000/busybox
可以看到镜像已经push到私有仓库中去了。
接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像。
$ sudo docker pull 192.168.112.136:5000/busybox
到此就搭建好了Docker私有仓库。上面搭建的仓库是不需要认证的,我们可以结合nginx和https实现认证和加密功能。
管理仓库中的镜像
查询
如果我们想要查询私有仓库中的所有镜像,使用docker search
命令:
# docker search registry_ip:5000/
如果要查询仓库中指定账户下的镜像,则使用如下命令:
# docker search registry_ip:5000/account/
同时也可以指定镜像查询。
删除
目前尚未找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,但是并不能成功删除镜像。
Registry V2
Registry V2.2的安装脚本如下:
#!/bin/bash
# Description: create a private registry v2.2
# Version: 0.2
#
# Author: wangtao 479021795@qq.com
# Date: 2015/10/29set -o xtraceif [[ $UID -ne 0 ]]; thenecho "Not root user. Please run as root."exit 0
fi# Install Docker if not
docker -v
if [[ $? -ne 0 ]]; thenecho "Please install Docker first."exit 0
fiREGISTRY_VERSION=2.2# Download registry image v2.2
docker pull registry:${REGISTRY_VERSION}# Start registry container
mkdir /opt/registry
docker run -d -p 5000:5000 --restart=always -v /opt/registry:/var/lib/registry --name hummer_registry registry:${REGISTRY_VERSION}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
Registry的存放目录在Docker Hub上显示的是/tmp/registry-dev,但是映射之后发现并没有存放在该目录,查看源码发现,镜像信息存放在/var/lib/registry目录下,因此这里修改为将/opt/registry目录映射到/var/lib/registry。
上传镜像
# docker push registry:5000/image_name
查看镜像
# curl -XGET http://registry:5000/v2/_catalog
# curl -XGET http://registry:5000/v2/image_name/tags/list
删除镜像
虽然看了官方API,但是还是不能成功删除,不知道digest如何生成。如果有知道的同学请不吝赐教。Docker Registry HTTP API V2
根据网上资料显示,当前版本尚不支持该功能,再等等看新版本吧。
转载自:http://blog.csdn.net/u010397369/article/details/42422243
根据自己的实验有所改动。
本来自己之前已经写了一篇关于Docker私有仓库的搭建的文章,但是后来不小心把它给覆盖了,也不想再写一遍了。这篇文章跟我的搭建思路差不多,所以就转载了这篇文章。
添加了Registry v2的安装部分。
转载于:https://my.oschina.net/u/199525/blog/1580873
Docker学习笔记 — Docker私有仓库搭建相关推荐
- Docker学习四--Harbor私有仓库搭建
Harbor企业级私有仓库搭建 安装docker-compose 进入官网 安装Harbor 下载harbor的离线安装包 进入系统进行安装 通过浏览器访问登录系统 安装docker-compose ...
- 狂神说--docker学习笔记-docker安装,常用命令,以及使用
狂神说bilibili视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 1. Docker概述 1.1 Docker为什么出现? 大家经常做一款 ...
- Docker学习笔记 - Docker Compose
一.概念 Docker Compose 用于定义运行使用多个容器的应用,可以一条命令启动应用(多个容器). 使用Docker Compose 的步骤: 定义容器 Dockerfile 定义应用的各个服 ...
- Docker学习笔记 - Docker容器的日志
docker logs [-f] [-t] [--tail] 容器名 -f -t --tail="all" 无参数:返回所有日志 -f 一直跟踪变化并返回 -t 带时间戳返 ...
- 狂神 Docker学习笔记 从基础到进阶 一步到位
Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...
- Docker基础03--Dockerfile详解与镜像发布--(狂神说docker学习笔记)
文章目录 1. Dockerfile介绍 2. Dockerfile指令说明 3. 制作Centos镜像 3.1 编写Dockerfile的文件 3.2 通过这个文件构建镜像(注意最后加个点!!!) ...
- 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)
长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...
- 开源的容器虚拟化平台Docker学习笔记,个人私藏分享,不谢!
一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...
- Docker学习笔记01
Docker学习笔记01 Docker学习 Docker的概述 Docker的安装 Docker的命令 镜像命令 容器命令 操作命令 ... Docker镜像 容器数据卷 DockerFile Doc ...
最新文章
- 人工智能数学基础----导数
- android 英文帮助文档地址,使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)...
- jar打包 jar line too long 异常处理方法
- android之APP模块编译
- node+express创建第一个node项目
- mysql 入门 jdbc
- Android 系统(78)--应用安装时间长
- jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息
- 【清单】—— 编程方法、整洁代码与重构
- EXCEL 2010学习笔记—— 动态图表
- 【渝粤教育】电大中专电商运营实操 (7)作业 题库
- Cocos2d JS 之消灭星星(十) 关卡配置
- MATLAB约束优化之惩罚函数法
- hairline!ios实现边框0.5px
- 运放噪声频率曲线-运放噪声计算-运算放大器
- html加载fbx模型,[Unity菜鸟] FBX模型动画提取
- vue 运行启动命令_如何使用Vue启动和运行
- VS2019源码,通过基址+偏移修改软件内阳光数值(植物大战僵尸单机版)
- window10突然变成繁体怎么办呢??
- 关系型数据库与非关系型数据库的简介、对比和说明!!!
热门文章
- python 参数解析_python的函数对参数解析分析
- python 调用 c 生成数组_python调用c++传递数组的实例
- SQL Server基础之存储过程
- html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件
- mysql sqlstate 28000_mysql ERROR 1045 (28000): 错误解决办法
- 'python program'.count('p')的值是_如何用Python分析泰坦尼克号生还率?
- 东软村医管理平台_软件定义汽车“性感”吗?东软睿驰有自己的答案
- 表贴3.3V稳压芯片 PL3500测试 低压差线性稳压器
- c# mysql fill_C#里sqlDataAdapter.fill(DataSet,String)的用法
- mybatis trim标签_MyBatis学习笔记