多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# :-: Docker私有镜像仓库 ## 1. 关于Registry 仓库:集中存放镜像的地方,可分为公共仓库和私有仓库(公共仓库"[http://hub.docker.com](http://hub.docker.com)"或国内的"[http://www.daocloud.io](http://www.daocloud.io)") 注册服务器(Registry):是存放仓库的服务器,每个服务器上都可以放置多个仓库,而每个仓库上可以放置多个镜像,每个镜像上可以运行多个容器,每个容器上可以跑一个应用或应用组。 Docker hub为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,然后我们需要的时候也可以随时下载。但缺点是: (1)由于网络的原因,从dockerhub上下载和上传镜像速度可能会比较慢。 (2)在生产上使用的docker镜像可能包含我们的代码、配置信息等,不想被外部人员获取,只允许内网的开发人员下载。如果上传到dockerhub上所有人都可以看到。 使用Docker私有仓库则解决了以上2个问题,在内部网络搭建docker私有仓库可以使内网人员下载和上传都非常快速,不受外网带宽等因素的影响,同时不在内网的人员无法下载我们的镜像。 ## 2. Registry的部署 1\. 运行下面命令获取registry镜像 docker pull registry 下载到的版本默认为 [docker.io/registry](http://docker.io/registry)            latest \*\* ![](https://img.kancloud.cn/06/37/0637fbf4ba5b635e3aaee94a6e0abaa9_672x236.png) 2\. 将registry镜像运行并生成一个容器 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。 3\. 运行docker ps看一下容器运行情况 4.registry容器启动后,打开浏览器输入http://*ip\_add*:5000/v2/,看到下面情况说明registry运行正常 ![](https://img.kancloud.cn/fe/9e/fe9ebae42b43568632a31a849384ae03_489x173.png) ## 3\. 测试上传镜像到Registry 通过将镜像push到registry来验证,首先将主机的registry镜像命名为符合仓库要求**registry\_url:port/ImageName:tag**的格式,如图 ![](https://img.kancloud.cn/0c/a7/0ca741a08ccfdeb213a862d6ed3a4838_585x175.png) 通过docker tag命令来实现命名 ``` docker tag sentinel-dashboard:latest 106.12.33.244:5000/sentinel-dashboard:latest ``` 通过命令 docker images 查看本地镜像,重新创建了一个镜像 ![](https://img.kancloud.cn/70/10/7010f1904a495a98a52e1d1757575b9a_884x236.png) 上传镜像到Registry仓库: ***** ``` docker push  106.12.33.244:5000/sentinel-dashboard:latest ``` **注意:** 可能会出现无法push镜像到私有仓库的问题。提示: ![](https://img.kancloud.cn/86/2c/862cf3b2e1f8032926dd9d5f1da5d5de_699x88.png) 这是因为我们启动的registry服务不是安全可信赖的。这时需要**修改客户端docker的配置**文件/etc/docker/daemon.json,添加下面蓝色的内容(registry服务地址)**:** ``` { "registry-mirrors": ["https://2o24a5kv.mirror.aliyuncs.com"],"insecure-registries": ["106.12.33.244:5000"] } ``` 修改好之后需要重启Docker服务才能生效,执行命令:**systemctl restart docker** ,再push即可。 push成功之后,查看本地/opt/registry目录下已经有了刚推送上来的registry镜像,也可以在浏览器中输入 ``` http://106.12.33.244:5000/v2/_catalog ``` ![](https://img.kancloud.cn/bc/42/bc429ac0df175cf398ef8e82620bb106_777x240.png =777x)