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 ...
随机推荐
- 【Java入门提高篇】Day5 Java中的回调(二)
Java中有很多个Timer,常用的有两个Timer类,一个java.util包下的Timer,一个是javax.swing包下的Timer,两个Timer类都有用到回调机制.可以使用它在到达指定时间 ...
- JSP8
一.EL表达式 JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP EL表达式内可以使用整型数,浮点数 ...
- Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)
Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ...
- VC++下编译 程序“减肥”
在vc6 和 vs 2008下 编译 以下代码,不更改任何编译设置(vc6 40k , s2008 7k). 一.vc6下,Release 模式 编译处理. 1.去掉不必要的 链接库 工程(Pro ...
- Spark之导出PMML文件(Python)
PMML,全称预言模型标记语言(Predictive Model Markup Language),利用XML描述和存储数据挖掘模型,是一个已经被W3C所接受的标准.PMML是一种基于XML的语言,用 ...
- css的padding和border问题
第一步:先跟据需求定义一个div,要求width为300px,height为300px: 第二步:给该div添加一个边框,要求实线,宽度10px,粉色: 第三步:给该div再设置20px的内边距: 我 ...
- idea从git上拉取并管理项目
1:idea从git上拉取项目 (1)FILE --> New --> Project from Version Control --> Git (2):输入项目的Https SSH ...
- node.js入门必知
目录: 一.node.js简介 1.1特点 1.2适合开发什么 1.3Node.js无法挑战老牌后台语言 二.http模块 一.node.js简介 Node.js开发服务器,数据.路由.本地关心的效果 ...
- Qwt安装(转)
======= 安装 ======= Qwt使用qmake编译所有的组件和示例. qmake是Qt发布中的一部分. qmake读取工程文件,工程文件包含了如何工程选项和如何编译特定工程的规则.一个工程 ...
- 响应式框架Bootstrap栅格系统
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8&qu ...