# :-: 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)
- 项目介绍
- 项目声明
- 项目简介
- 架构设计
- 项目亮点功能介绍
- 技术栈介绍
- 核心功能
- 运行环境
- 项目更新日志
- 文档更新日志
- F&Q
- 部署教程
- 环境准备
- JDK安装
- JDK1.8,17共存
- maven
- 分布式缓存Redis
- 单机版
- 集群
- 注册&配置中心alibaba/nacos
- 介绍
- Nacos安装
- Nacos配置中心
- Nacos注册发现
- Nacos生产部署方案
- 服务监控-BootAdmin
- 基本介绍
- 如何使用
- 整合Admin-Ui
- 客户端配置
- 链路追踪
- 基本介绍
- SkyWalking-1
- Skywalking-1
- 消息队列
- Kafka
- docker安装kafka
- Linux集群
- Maven私服
- nexus安装部署
- nexus使用介绍
- 全文搜索elasticsearch
- windows集群搭建
- docker安装es
- ElasticHD
- linux集群部署
- 统一日志解决方案
- 日志解决方案设计
- 介绍与相关资料
- ELK安装部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服务监控-Prometheus
- Prometheus安装配置
- Prometheus介绍
- grafana
- 持续集成部署CICD
- 自动化部署Jenkins
- 安装部署win
- 打包发布远程执行
- 安装部署linux
- jenkins+gitlab+docker容器化工程自动化部署
- Git
- CICD说明
- 阿里云效
- CentOS_MYSQL安装
- docker
- 安装
- Docker安装Nginx
- Docker部署启动springboot
- dockerCompose
- harbor
- Docker私有镜像仓库
- Portainer
- Docker远程连接设置
- 打包工程
- 必要启动模块
- 核心模块
- 登录认证
- 缓存功能
- 日志模块
- 分布式锁
- 消息队列
- 异常处理
- 系统接口
- 参数验证
- es检索
- 数据导出
- 系统设计
- 系统总体架构
- 扩展模块(可选)
- 限流熔断alibaba/sentinel
- 使用Sentinel实现gateway网关及服务接口限流
- Sentinel使用Nacos存储规则及同步
- 服务调用Feign
- Feign基本介绍
- 如何使用
- 负载均衡
- 请求超时
- 请求拦截器
- 分布式任务调度
- XXL-JOB
- 分布式事务
- TX-LCN
- Seata
- Seata原理解析
- 数据库分库分表
- swagger文档
- 分布式ID生成器解决方案
- 服务网关CloudGateway
- 基本介绍
- 使用网关
- 路由配置
- 全局过滤器
- 服务认证授权架构设计
- 认证服务流程
- 授权服务流程
- 系统幂等性设计与实践
- 分布式日志链路跟踪
- 实时搜索系统设计
- 应用性能
- 压力测试工具
- Apache JMeter介绍和安装
- ApacheJMeter使用
- JVM
- JVM性能调优
- 常见JVM内存错误及解决方案
- JVM 分析工具详解
- Spring Cloud性能调优
- Linux运维
- Linux 常用命令
- Linux开启端口