Docker(三):Docker仓库配置
1、仓库介绍
仓库(repository)用来集中管理Docker镜像,支持镜像分发和更新。
目前世界上最大最知名的公共仓库是Docker官方的Docker Hub,国内比较知名的有:Docker Pool、阿里云仓库等。
2、镜像仓库
仓库下面包含着一组镜像,镜像之间用标签(tag)区分,一个完整的镜像路径通常由服务器地址、仓库名称和标签组成,如:
registry.hub.docker.com/official/ubuntu:14.04
2.1 上传镜像
docker push localhost:5000/official/ubuntu:14.04
上述命令是向本地仓库上传镜像,如果不写仓库地址默认想docker官方仓库上传镜像,向官方仓库上传镜像需要登录账户,上传的目标是自己的仓库。
2.2 下载镜像
docker pull ubuntu:14.04
不加tag默认下载所有ubuntu仓库下的官方镜像。
2.3 查询镜像
docker search localhost:5000/ubuntu #仓库开发者需要实现查询功能
3、构建私有仓库
Docker私有服务(private registry)用来建设私有仓库,部署私有仓库的优点:
可独立开发和运维私有仓库;
节省带宽资源
有独立的账户管理系统
增加了定制化功能
搭建私有仓库之前要部署Docker Private Registry,命令如下:
docker run -d --hostname localhost --name registry-v2 \
-v /opt/data/distribution:/var/lib/registry/docker/registry/v2 \
-p 5000:5000 registry:2.0
上面运行一个名为registry-v2的服务,-v把本地目录mount到容器内的镜像目录,方便开发者查看和管理本地镜像数据。
上传下载镜像:
docker push/pull localhost:5000/official/ubuntu:14.04
由于暴露的5000端口,能访问该主机的用户都可以通过5000端口上传或下载镜像
4、构建反向代理
在实际使用中,暴露主机端口是不安全的,一般设计私有仓库时会加上https反向代理。
假设私有仓库的地址:https://my.docker.io,利用opendns组织下的nginx-auth-proxy开源项目实现反向代理功能。
开源项目地址:https://github.com/opendns/nginx-auth-proxy
实现反向代理需要生成服务器的一对密钥和根证书,利用OpenSSL生成自签名证书命令如下:
生成私钥文件server.key:openssl genrsa -out server.key 2048
生成根证书文件server.pem:openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 3650 \
-out server.pem -subj "/C=CN/ST=state/L=city/O=Your Company Name/OU=localhost"
将pem证书转换成crt证书,放到系统证书目录(用户访问registry之前需要做这一步):
cat server.pem | sudo tee -a /etc/ssl/certs/server.crt
nginx把生成的证书通过Dockerfile加载到镜像中:
ADD server.crt /etc/ssl/certs/docker-registry
ADD server.key /etc/ssl/private/docker-registry
配置nginx支持ssl功能
ssl;
ssl_certificate /etc/ssl/certs/docker-registry;
ssl_certificate /etc/ssl/private/docker-registry
配置用户验证文件
auth_basic_user_file <htpasswd file name>
运行nginx容器,启动代理功能
docker run -d --hostname my.docker.io --name nginx --link registry:registry -p 443:443 nginx
nginx配置反代到registry
proxy_pass http://registry:5000;
请求头配置
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Authorization "";
proxy_set_header Accept-Encoding "";
proxy_set_header X-Forwarded-By $Server_addr:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
资源访问配置
不需要鉴权
location /v2/ {
auth_basic off;
proxy_pass http://docker-registry;
}
需要鉴权
location /auth/{
auth_basic "Resticted";
auth_basic_user_file passwd;
proxy_pass http://docker-registry;
}
上传私有镜像到registry,必须先登录
docker login -u <usernam> -p <password> -e <email> my.registry.io
Docker(三):Docker仓库配置的更多相关文章
- Docker(三)-Docker中Image、Container与Volume的迁移
Image 镜像的迁移,适用于离线环境. 一般离线环境,都会自建Docker Registry. 无论 官方的 ,还是最近流行的 Harbor ,都是不错的选择. 但是,这个世界上就是有些环境,或者说 ...
- Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库
转载自:https://cloud.tencent.com/developer/article/1010590 1.Nexus OSS 3 介绍 我们知道 Nexus 是一个强大的 Maven 仓库管 ...
- npm私有仓库 配置verdaccio在docker环境
前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...
- Docker搭建镜像仓库和配置缓冲地点
Docker搭建镜像仓库和配置缓冲地点 参考网址:https://docs.docker.com/engine/reference/commandline/dockerd/#options 一.配置D ...
- docker registry 私有仓库 安装配置、查询、删除
#++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...
- docker(三):Harbor 1.8.0 仓库的安装和使用
回顾: docker(一):docker是什么? docker(二):CentOS安装docker docker(部署常见应用):docker部署mysql 安装的先决条件 硬件环境 1.CPU ...
- 配置docker的私有仓库
1:安装docker-registry包 yum install -y docker-distribution 2:启动docker-distribution,默认监听于TCP/5000端口 sy ...
- 使用Nexus3构建Docker私有镜像仓库
一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...
- Docker 从入门到实践(二)Docker 三个基本概念
一.Docker 的三个进本概念? 了解 Docker 的三个基本概念,就可以大致了解 Docker 的生命周期. 镜像(Image) 容器(Container) 仓库(Repository) 二.镜 ...
- docker 4 docker的三要素
docker三要素 镜像,容器,仓库 镜像 docker镜像(image)就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建很多个容器 容器 docker利用容器(containe ...
随机推荐
- SpringBoot零基础入门指南--搭建Springboot然后能够在浏览器返回数据
File->new Project 修改默认包名,根据自己的喜好修改 选择初始化需要导入的包,尽量不要一开始就导入很多,特别是数据库,不然启动可能会有问题,创建好的目录如下: 配置文件写在app ...
- Python之编程基础(编程语言分类)
一.编程语言简介 编程语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 1.编译型跟解释型 编译型,其实他和汇编语言是一样的,也是有一个负责翻译的程 ...
- Python 学习(1) 简单的小爬虫
最近抽空学了两天的Python,基础知识都看完了,正好想申请个联通日租卡,就花了2小时写了个小爬虫,爬一下联通日租卡的申请页面,看有没有好记一点的手机号~ 人工挑眼都挑花了. 用的IDE是PyCh ...
- MySQL 索引管理与执行计划
1.1 索引的介绍 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. ...
- sqlserver2005公布与订阅配置步骤
1,新建公布 前提条件:第一要调通网络,在sqlserver configuration manager 中选择mssqlserver的协议把named pipes改为启用.第二要建立一个目录D:\b ...
- Android笔记(五)利用Intent启动活动
Intent是意图的意思,分为显式 Intent 和隐式 Intent. 以下我们试图在FirstActivity中通过点击button来启动SecondActivity 1.显式Intent 在应用 ...
- Activiti源代码分析
ExecutionEntity内部含有parent,是一个运行树或运行路径.应该是一个流程实例的运行过程,一个实例相应一个ExecutionEntity,通过getActivity得到的是当前正在运行 ...
- POJ - 1611The Suspects-并查集
POJ - 1611 The Suspects Time Limit: 1000MS Memory Limit: 20000KB 64bit IO Format: %I64d & %I ...
- OVS 总体架构、源码结构及数据流程全面解析
在前文「从 Bridge 到 OVS」中,我们已经对 OVS 进行了一番探索.本文决定从 OVS 的整体架构到各个组件都进行一个详细的介绍. OVS 架构 OVS 是产品级的虚拟交换机,大量应用在生产 ...
- Centos 7 安装 PostgreSQL
本文只讲PostgreSQL在CentOS 7.x 下的安装,其他系统请查看:https://www.postgresql.org/download PostgreSQL 所用版本为:PostgreS ...