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 ...
随机推荐
- js代码大全(各种方法、属性)《转载》
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.sr ...
- ThinkPHP中处理Layout模板的问题
ThinkPHP中的模板引擎内置了布局模板功能支持,可以方便实现嵌套. 其中有两种布局方式,一种为以布局模板为入口的布局方式,但是需要开启LAYOUT_ON 参数(默认不开启) 并且设置布局入口文件名 ...
- 电子笔记本的思考(1)(ver0.3)
章节:电子笔记本的思考(1) 陶哲轩在<解题·成长·快乐——陶哲轩教你学数学>中着重强调,用纸笔来“缓存”思维对于数学解题的重要性: 用选定的符号表达你所知道的信息,并画一个示意图.把 ...
- 【转】Nginx反向代理和负载均衡
原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...
- NYOJ 119 士兵杀敌(三) RMQ ST
NYOJ 119 士兵杀敌(三) RMQ ST 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119 思路: ST在线 预处理O(nlog ...
- CSS书写规范与理论
前端体系的变化可谓是日新月异,短短一年时间,从理论.框架.构建工具.甚至开发语言都发生非常大的变化. 随着新项目就即将启动,我抽时间回顾了一下以往项目的前端架构,零零散散产生了许多想法,尽量一一记录下 ...
- Scala入门系列(七):面向对象之继承
extends 与Java一样,也是使用extends关键字,使用继承可以有效复用代码 class Person { private var name = "leo" def ge ...
- 树莓派搭建pptp---vpn
好久没写博文了啊,这次好好写 先普及下知识啊 PTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议, ...
- Maven SpringMVC整合Mybatis
关于Spring的核心理念和Mybatis的优点网上已经有很多文档做了说明.这篇博客,只记录springmvc整合mybatis时常见的知识点,以及注意事项,它只有最精简的几个模块,以帮助初学者迅速搭 ...
- python爬虫(六)_urllib2:handle处理器和自定义opener
本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页 ...