docker搭建私有仓库(ssl、身份认证)

环境:CentOS 7、Docker 1.13.1

CentOS 7相关:

https://www.cnblogs.com/ttkl/p/11041124.html

Docker相关(服务端):

  • 安装docker
  1. yum -y install docker-io
  • 启动docker,并配置开机启动
  1. systemctl start docker
  2. systemctl enable docker
  • 拉取registry镜像
  1. docker pull registry:2
  • 生成ssl密钥
  1. # 创建ssl相关目录
  2. mkdir ~/certs
  3. # 生成ssl密钥
  4. openssl req -newkey rsa:2048 -nodes -sha256 -keyout certs/test.registry.com.key -x509 -days 365 -out certs/test.registry.com.crt
  • 创建用户
  1. # 创建registry登陆用户文件夹
  2. mkdir ~/auth
  3. # 创建private用户
  4. docker run --entrypoint htpasswd registry:2 -Bbn admin admin > ~/auth/htpasswd
  5. # 删除运行的容器
  6. docker stop [CONTAINER ID]
  7. docker rm [CONTAINER ID]
  • 后台运行容器(私有仓库)
  1. docker run -d -p 5000:5000 --restart=always --name registry \
  2. -v ~/auth:/auth \
  3. -e "REGISTRY_AUTH=htpasswd" \
  4. -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  5. -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  6. -v ~/data:/var/lib/registry \
  7. -v ~/certs:/certs \
  8. -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/test.registry.com.crt \
  9. -e REGISTRY_HTTP_TLS_KEY=/certs/test.registry.com.key \
  10. registry:2

可能遇到以下问题:

  1. #1、open /certs/xx.crt: permission denied(类似问题)
  2. 解决:①chcon -Rt svirt_sandbox_file_t ~/certs/
  3. ②禁用selinux即可(详细请看centos7的安装)
  4. #2、failed with status: 401 Unauthorized
  5. 解决:输入正确的用户名和密码
  6. #3、The push refers to a repository [x.x.x.x:5000/registry]
  7. Get https://x.x.x.x:5000/v1/_ping: x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs
  8. 解决:*修改/etc/pki/tls/openssl.cnf配置[ v3_ca ]
  9. [ v3_ca ]
  10. # Extensions for a typical CA
  11. subjectAltName = IP:x.x.x.x
  12. *重启docker
  13. *重新配置
  14. #4、The push refers to a repository [x.x.x.x:5000/registry]
  15. Get https://x.x.x.x:5000/v1/_ping: x509: certificate signed by unknown authority
  16. 解决:添加私有证书到docker
  17. *在/etc/docker/certs.d/目录下创建x.x.x.x:5000文件夹
  18. *复制~/certs/*.crt文件到x.x.x.x:5000文件夹下即可

Docker相关(客户端):

tls加密通讯:

  • 创建文件夹
  1. mkdir /ssl
  2. cd /ssl
  • 创建ca密钥
  1. openssl genrsa -aes256 -out ca-key.pem 4096
  • 创建ca证书
  1. openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
  • 创建服务器私钥
  1. openssl genrsa -out server-key.pem 4096
  • 签名私钥
  1. openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
  • 使用ca证书与私钥证书签名
  1. openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
  • 生成客户端密钥
  1. openssl genrsa -out key.pem 4096
  • 签名客户端
  1. openssl req -subj "/CN=client" -new -key key.pem -out client.csr
  • 创建配置文件
  1. echo extendedKeyUsage=clientAuth > extfile.cnf
  • 签名证书
  1. openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
  • 删除多余文件
  1. rm -rf ca.srl client.csr extfile.cnf server.csr

docker配置文件:

  1. # 查看docker配置文件
  2. systemctl status docker.service
  3. # 修改配置文件,添加两行内容
  4. ExecStart=...
  5. --tlsverify --tlscacert=/ssl/ca.pem --tlscert=/ssl/server-cert.pem --tlskey=/ssl/server-key.pem
  6. -H unix:///var/run/docker.sock -H tcp://0.0.0.0:5555
  7. ...
  8. # 重启docker
  9. systemctl daemon-reload
  10. systemctl restart docker.service

本机别名:

Linux:

  1. # 配置文件位置
  2. /etc/hosts
  3. # 添加一行内容
  4. ip servername

Windows:

  1. # 配置文件位置
  2. C:\Windows\System32\drivers\etc\hosts
  3. # 添加一行内容
  4. ip servername

[Docker]docker搭建私有仓库(ssl、身份认证)的更多相关文章

  1. Docker:搭建私有仓库(Registry 2.4)

    一.背景 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候, ...

  2. docker registry-v2 搭建私有仓库

    参考官方文档:https://docs.docker.com/registry/deploying/ 参考 :http://www.tuicool.com/articles/6jEJZj 本例子使用两 ...

  3. Docker Registry搭建私有仓库

    利用Registry镜像搭建Docker私有仓库遇到了很多坑,说来也是找到的资料都是杂而不精的东西,所以也没少走了弯路,现在回过头看去感觉好多坑还是别人给挖的··· 不过努力的最终结果还是好的,因为找 ...

  4. Ubuntu Docker Registry 搭建私有仓库

    服务器版本 Ubuntu 16.04 LTS. 安装命令: $ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --rest ...

  5. docker之搭建私有仓库

    一.私有仓库 1.防止网络原因:下载慢,访问不到的情况,需要在内网搭建一个私有仓库. 二.仓库镜像下载 [root@node03 ~]# docker pull registry 三.创建私有仓库容器 ...

  6. Docker 在搭建私有仓库配置镜像时候报错

    今天搞私有镜像报了个错 ,看了,好久原来是 多了个空格 服务失败,因为控制进程退出时带有错误代码.参见"systemctl状态docker".详细信息参见"服务" ...

  7. docker进阶-搭建私有企业级镜像仓库Harbor

    为什么要搭建私有镜像仓库   对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...

  8. 菜鸟系列docker——搭建私有仓库harbor(6)

    docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...

  9. Docker搭建私有仓库

    1,下载仓库镜像. docker pull  registry    //主要用于搭建私有仓库的. 2,将宿主机端口映射到容器中去,容器的5000端口是不能更改的. docker run -d -p ...

随机推荐

  1. ELK-全过程搭建

    环境说明:软件包我都 给你们放/usr/local/src/elk目录下安装目录都放在/usr/local/下数据都放在/data0/elk/目录下日志都放在/data0/logs/elk目录下系统 ...

  2. python线程间通信

    #!/usr/bin/python # -*- coding:utf8 -*- from threading import Thread, Lock import random def test_th ...

  3. Codeforces 1244E. Minimizing Difference

    传送门 首先减的顺序是无关紧要的,那么有一个显然的贪心 每次减都减最大或者最小的,因为如果不这样操作,最大的差值不会变小 那么直接把序列排序一下然后模拟一下操作过程即可,别一次只减 $1$ 就好 #i ...

  4. Open API

    OAuth和SSO都可以做统一认证登录,但是OAuth的流程比SSO复杂.SSO只能做用户的认证登录,OAuth不仅能做用户的认证登录,开可以做open api开放更多的用户资源. Open API即 ...

  5. Java实现的基础数据结构

    Java实现的基础数据结构 0,常用的基础数据结构 图1 基础数据结构&相关特性 图2 Java自带的类集框架&继承关系图 1,数组[Array] 特点:长度固定.查找方便[直接使用i ...

  6. IIS Express启动不了的的解决方案

    netsh http show iplisten netsh http delete iplisten ipaddress=11.22.33.44 (where 11.22.33.44 is the ...

  7. gRPC 和 C#

    前些天gRPC 发布1.0 版本,代表着gRPC 已经正式进入稳定阶段. 今天我们就来学习gRPC C# .而且目前也已经支持.NET Core 可以实现完美跨平台. 传统的.NET 可以通过Mono ...

  8. ftp卡死问题

    最近用org.apache.commons.net.ftp.FTPClient  写ftp的上传下载的定时任务 发现有时候线程会卡住,也不报错就一直不工作了,后来发现需要使用ftp的被动模式才行,实现 ...

  9. vue防重复点击(指令实现)

    快速点击按钮会重复多次调用接口,防止出现这样的情况 全局定义,方便调用 新建plugins.js export default { install (Vue) { // 防重复点击(指令实现) Vue ...

  10. 06-【servletconfig、servletContext 】

    ServletConfig.ServletContext 1.ServletConfig获取web.xml中的配置信息:java代码: @Override public void init(Servl ...