Docker Register部署与基本认证
准备
- 基本事项
- Docker环境
- 登录授权方式
- 镜像存放地址
- HTTPS外网访问
- 启动Docker Registry
1. 基本事项
本篇涉及到的数据文件都放在/data目录下, 其中会有三个子目录
/data/auth/ 基本的用户名密码认证文件存放地址
/data/certs/ docker registry 镜像https访问射击到的证书与密钥的存放地址
/data/registry/ docker registry镜像的存放地址, 当push镜像到镜像服务器之后,镜像就是存放在这里
2. Docker环境
docker的安装,全称参考官网介绍: https://docs.docker.com/engine/installation/linux/docker-ce/debian/#install-docker-ce
3. Registry登录认证
Registry Server的登录认证有多种方式,这里我们使用常规情况下的一种认证,基本的用户名密码认证,这种认证方式也跟nginx的基本http认证相同, 使用一个htpasswd文件来存放认证的用户名跟密码, 这个文件的操作是通过htpasswd这个命令来添加与管理用户密码的.
如果系统中没有这个命令,可通过下面命令安装
apt-get install apache2-utils
通过htpasswd命令生成用户管理文件并添加一个用户
htpasswd -cBb auth/htpasswd <username> <password>
往现有的文件里面添加一个用户
htpasswd -Bb auth/htpasswd <username> <password>
Docker官网文档地址: https://docs.docker.com/registry/deploying/#restricting-access
4. 镜像存放地址
通常正式环境我们的镜像会存储在外部,而不是在docker container里面, 所以我们需要在外部准备一个目录,在启动registry镜像的时候,通过-v 参数映射到container内部, 此教程里面的目录是/data/registry/
5. HTTPS外网访问
外网访问必须要用https, 主要是涉及到证书的问题, 通常我们可以使用自签名证书,
我们分docker register server端跟 docker pull 客户端两部分来讲
server端不涉及根证书添加到信任区域问题,
client端要访问自签名证书的服务器,必须添加根证书到client的信任区
BUT: 当docker register server需要pull/push镜像的时候,就需要把根证书添加到信任区, 这里有个原则,就是哪里需要pull/push镜像,那台机器就需要添加根证书
添加自签名根证书到linux信任区(Debian, 适用于Ubuntu)
这个步骤只需要用到docker pull的机器上做, docker registry server非必须
证书存放区域: /usr/share/ca-certificates/
Copy证书到证书存放地址:
wget http://agilelabs.net/certifications/publicauthorities/agilelabs_root_ca.pem/ –O /usr/share/ca-certificates/agilelabs_root_ca.crt
重新加载新添加的跟证书:
dpkg-reconfigure ca-certificates
选择YES=>通过”空格”键选择刚添加的根证书=> Tab到底部的OK=>回车选择
添加新的根证书之后需要重启Docker,让 Docker能识别新的证书
service docker restart
6. 启动Docker Registry
mkdir -p /data/registry \
mkdir -p /data/auth \
mkdir -p /data/certsdocker run -d \
--restart=always \
--name registry \
-v /data/registry:/var/lib/registry \
-v /data/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /data/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.niusys.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/niusys.key \
-p 443:443 \
registry:2
以上算是对这段时间研究Docker以来,搭建Registry的总结。
自签名证书的部分可以通过 http://agilelabs.net 非常方便的生成与下载.
无论是密钥还是证书都可以通过右键复制链接, 在Linux里面通过 wget http://agilelabs.net/下载地址 –O 要保存的文件名
比如下载根证书并存储到/usr/share/ca-certificates目录下的agilelabs_root_ca.crt文件: wget http://agilelabs.net/certifications/publicauthorities/agilelabs_root_ca.pem/ –O /usr/share/ca-certificates/agilelabs_root_ca.crt
补充 1 - 通过NGINX为Docker Registry配置反向代理
我们知道https是使用的443端口,如果Docker Registry的Container端口映射到机器的443端口,那意味着这个机器再没办法部署其他https的服务, 在这里准备通过nginx反向代理Docker Registry,做到443端口的多服务共享, 我在上面的启动配置里面把 –p 443:443换成了 –p 4433:443, 下面是nginx的docker registry反向代理配置
upstream internal_docker_registry {
server localhost:4433; # registry.renhl.com
}server {
listen 443 ssl;
server_name registry.niusys.comssl on;
ssl_certificate /data/certs/registry.niusys.com.crt;
ssl_certificate_key /data/certs/niusys.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2;client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;location / {
proxy_pass https://internal_docker_registry;
proxy_read_timeout 90;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
Docker Register部署与基本认证的更多相关文章
- Docker Register安装与基本认证
准备 基本事项 Docker环境 登录授权方式 镜像存放地址 HTTPS外网访问 启动Docker Registry 1. 基本事项 本篇涉及到的数据文件都放在/data目录下, 其中会有三个子目录 ...
- docker开启2376端口CA认证及IDEA中一键部署docker项目
嘿,大家好,今天更新的内容是docker开启2376端口CA认证及IDEA中一键部署docker项目... 先看效果 我们可以通过idea一键部署docker项目,还以通过idea的控制台实时查看容器 ...
- .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)
本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...
- 使用Docker 一键部署 LNMP+Redis 环境
使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- 01 . Docker原理部署及常用操作命令
Docker的来源及构造: 容器是一种基础工具:泛指任何用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳,储存,运输物品: 物品可以被放置在容器中,而容器可以保护内容物: 人类使用容器的历史有十 ...
- Docker开启远程连接,本地IDEA使用docker插件连接(不认证的版本和认证的版本都有)
前言 在学校学习的时候,要部署一个Java程序,一般是打成war包,放到服务器上的tomcat的webapp里面去: 后来SpringBoot出现内置了tomcat,就直接打成jar包,丢到服务器任何 ...
- Docker安装部署Rancher
# 一.Rancher简介 [Rancher](https://www.cnrancher.com/rancher/)是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开 ...
- Docker 容器部署 Consul 集群
Docker 容器部署 Consul 集群 一.docker安装与启动1.1安装docker[root@localhost /]# yum -y install docker-io 1.2更改配置文件 ...
- 在docker里部署网络服务
之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...
随机推荐
- mysql官网
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
- Memcache类
class Memcache{ private static $mem = null; public function mem_create(){ self::$mem = new \Memcache ...
- Two Sum IV - Input is a BST LT653
Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...
- springmvc相关
Springmvc的请求注解可分为四类: url请求地址(PathVariable). head请求头(RequestHeader.CookieValue). body请求体(RequestParam ...
- 买铅笔(NOIP2016)
先给题目链接:买铅笔 这题非常水,没啥可分析的,先给代码: #include<bits/stdc++.h> //1 using namespace std; int main(){ int ...
- Java ClassLoad详解
Java ClassLoad详解 类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一.它使得 Java 类可以被动态加载到 Java 虚拟机中并执行.类加载器从 JDK 1. ...
- python文件打包
python文件打包 先安装 pip3 install --upgrade pyinstaller 进入到文件的当前目录 ,在命令行中输入: pyinstaller -F -w[文件名].py 其中- ...
- ubunut下安装ibus_pinyin中文输入法
ubuntu安装中文输入法,,此处一ibus-pinyin为例为其安装中文输入法,,, 1. 设置(setting)---语言支持(language support)---汉语(chinese),,, ...
- thinkphp5 数据库和模型
1.Db和模型的存在只是ThinkPHP5.0架构设计中的职责和定位不同,Db负责的只是数据(表)访问,模型负责的是业务数据和业务逻辑.2.Db和模型最明显的一个区别就是Db查询返回的数据类型为数组( ...
- mysql下载、安装
一.下载 网上下载地址五花八门,为了防止出现不必要的麻烦,建议直接从官网下载.有几点好处: 1.没有任何其他捆绑的软件 2.版本分布清晰,一般建议选择较新版本 mysql官网下载地址:https ...