Docker私有仓库registry的搭建及使用
前言
由于Docker Hub公共仓库很多时候使用这并不是很方便,大分部因为网络的问题可能拉取的时候会很慢或者拉取不到,所以搭建一个本地的私有仓库。
准备
由于此篇文章是在Kubernetes集群安装部署这篇文章的基础上补充docker私有仓库的搭建,所以安装机器配置过hosts的
[root@k8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.44.60 etcd
192.168.44.60 registry 192.168.44.60 k8s-master
192.168.44.61 k8s-slave01
192.168.44.62 k8s-slave02
搭建过程
1、拉取并启动registry容器
从Docker官方仓库里下载registry镜像
[root@k8s-master ~]# docker pull registry
通过该镜像启动容器
[root@k8s-master ~]# docker run -d --name=my_registry -p 5000:5000 -v /opt/data/docker_registry:/var/lib/registry --restart=always --privileged=true registry
8eaed99a084999678795b9a6cedb8e57446f555dde6798756718f1b4decfee66
参数解释:
-v /opt/data/registry:/var/lib/registry:默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器,不过也不一定是这个目录,具体还是进入镜像内确定一下最好,也有可能是/var/lib/registry或者其他目录,如果不是的话重新启动一下容器。
-p 5000:5000 :端口映射。即本地5000端口,映射到registry中的5000端口。
–restart=always:在容器退出时总是重启容器,主要应用在生产环境。
–privileged=true:在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报类似权限错误。OSError: [Errno 13] Permission denied: '/tmp/registry/repositories/liibrary')或者(Received unexpected HTTP status: 500 Internal Server Error)
–-name=my_registry:指定容器的名称,也可以-name my_registry。
查看容器
[root@k8s-master ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8eaed99a0849 docker.io/registry "/entrypoint.sh /e..." 50 seconds ago Up 49 seconds 0.0.0.0:5000->5000/tcp my_registry
由上可以看到,已经启动了一个容器,地址为:registry:5000也就是192.168.44.60:5000。
修改daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["registry:5000"]
}
重启docker
systemctl restart docker
2、将本地镜像push到私有仓库中
首先看一下现在机器上的镜像
[root@k8s-master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 33fbbf4a24e5 12 days ago 24.2 MB
docker.io/tomcat latest 1a51cb5e3006 2 weeks ago 462 MB
docker.io/nginx latest 7042885a156a 2 weeks ago 109 MB
docker.io/mysql latest 102816b1ee7d 2 weeks ago 486 MB
docker.io/redis latest 5d2989ac9711 2 weeks ago 95 MB
docker.io/centos latest 1e1148e4cc2c 5 weeks ago 202 MB
修改一下tomcat镜像的tag标识,然后查看镜像信息
[root@k8s-master ~]# docker tag tomcat registry:5000/tomcat [root@k8s-master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest 33fbbf4a24e5 12 days ago 24.2 MB
docker.io/tomcat latest 1a51cb5e3006 2 weeks ago 462 MB
registry:5000/tomcat latest 1a51cb5e3006 2 weeks ago 462 MB
docker.io/nginx latest 7042885a156a 2 weeks ago 109 MB
docker.io/mysql latest 102816b1ee7d 2 weeks ago 486 MB
docker.io/redis latest 5d2989ac9711 2 weeks ago 95 MB
docker.io/centos latest 1e1148e4cc2c 5 weeks ago 202 MB
发现多了一个registry:5000/tomcat镜像,另外需要注意的是:修改了tag后的镜像若要删除,docker rmi后面不能用镜像ID了,需要用docker rmi registry:5000/tomcat。
把上面修改tag后的镜像上传到私有仓库
[root@k8s-master ~]# docker push registry:5000/tomcat
The push refers to a repository [registry:5000/tomcat]
10acf9008214: Pushed
f725cace5e8c: Pushed
70333c64c1a2: Pushed
a8586e8d29fb: Pushed
2d63501da7e5: Pushed
e6ae888dd260: Pushed
80917357f055: Pushed
bfc5dbc4d7a7: Pushed
b53b57a50746: Pushed
d2518892581f: Pushed
c581f4ede92d: Pushed
latest: digest: sha256:af0dc8139f8353ff2f10f8fe9fdf54a9d844f4c337b35dd40b6c0336d919e3f6 size: 2626
验证是否将镜像上传到私有仓库
[root@k8s-master ~]# curl -XGET http://registry:5000/v2/_catalog
{"repositories":["tomcat"]}
[root@k8s-master ~]# curl -XGET http://registry:5000/v2/tomcat/tags/list
{"name":"tomcat","tags":["latest"]}
查看映射的本地文件夹
[root@k8s-master ~]# ls /opt/data/docker_registry/
docker
此时即便将docker images中列出来的 registry:5000/tomcat删掉,本地仓库中的registry:5000/tomcat也还是可以正常使用的。
docker rmi registry:5000/tomcat
如此,Kubernetes集群安装部署这篇文章中的master的配置才起到了作用(可以从本地仓库拉取所需镜像)。
这样,也就可以在同一局域网内的其他机器上,从该私有仓库中pull下来该镜像:
docker pull registry:5000/tomcat
#如果没有配置hosts信息,可通过ip来拉取
docker pull 192.168.44.60:5000/tomcat
删除私有仓库镜像
下载delete_docker_registry_image工具
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
更改目录权限,设置目录变量
chmod 755 /usr/local/bin/delete_docker_registry_image
export REGISTRY_DATA_DIR=/opt/data/docker_registry/docker/registry/v2
删除私有仓库镜像
delete_docker_registry_image -i tomcat
Docker私有仓库registry的搭建及使用的更多相关文章
- Docker私有仓库Registry的搭建验证
1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...
- 转载:教你分分钟搞定Docker私有仓库Registry
一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法 ...
- 教你分分钟搞定Docker私有仓库Registry
一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法 ...
- (转)教你分分钟搞定Docker私有仓库Registry
转:https://www.cnblogs.com/Javame/p/7389093.html 一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方 ...
- Docker私有仓库Registry 搭建
1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...
- Centos 7上Docker私有仓库Registry实战
1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...
- Docker私有仓库Registry实战
参考: https://www.cnblogs.com/soar1688/p/6828329.html 1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在 ...
- docker私有仓库registry的使用
1.registry的安装 关于docker registry的安装,可以说简单的不能再简单了,docker run一个容器就好了,也就是一条命令的事 docker run -d -p : --res ...
- Docker私有仓库 Registry中的镜像管理
这里主要介绍Registry v2的版本 查看Registry仓库中现有的镜像: # curl -XGET http://10.0.30.6:5000/v2/_catalog# curl -XGET ...
随机推荐
- java中可以让程序暂停几秒执行的代码
//n为毫秒数 try { Thread.sleep ( n ) ; } catch (InterruptedException ie){} try { TimeUnit.SECONDS.sleep( ...
- 二叉树题目集合 python
二叉树是被考察频率非常高的数据结构.二叉树是按照“父节点-左子树&右子树”这样的方式,由根节点不断向下扩展,形成一棵树的结构.二叉树经常被提到的三种遍历方式:前序遍历.中序遍历和后序遍历,既是 ...
- 基于Html5的爱情主题网站–表白神器
介绍 一个基于基于Html5的爱情主题,文字采用打字机效果,逐字打印,并带有键盘敲击声音.在chrome,safari,firefox,IE10下都有效,chrome下效果最佳.要注意的是safari ...
- 在WPF中使用CefSharp嵌入浏览器(转)
在WPF中使用CefSharp嵌入浏览器 日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它 ...
- memsql filesystem pipeline 试用
一些功能类似drill ,比如s3,file ... 创建file pipeline 准备file mkdir -p /opt/db/ touch books.txt 内容如下: The Catche ...
- php解析HTML
PHP Simple HTML DOM 解析器显然是相当不多的html文件解析工具.他能够在server端採用相似于jquery的方式进行dom查找和改动.眼下这个解析器支持PHP5. 可是,这个首先 ...
- FastAdmin Bootstrap-Table 关于客户端模式(由 计算所有页的的总数引发的思考)
Bootstrap-Table 关于客户端模式(由 计算所有页的的总数引发的思考) 昨天群里有小伙伴询问 Bootstrap-Table 有没有计算所有页的总数. [吐槽]★隔壁老王-杭州 @F4NN ...
- SpookyOTP
https://pypi.python.org/pypi/SpookyOTP/1.1.1 SpookyOTP 1.1.1 Downloads ↓ A lightweight Python 2/3 pa ...
- Python 定期检查Build_setting的编译情况
#!/usr/bin/python #_*_ coding:utf-8 _*_ import time from email.MIMEText import MIMEText from email.M ...
- 【转】java内存分配和String类型的深度解析
一.引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题.下面是本 ...