[Docker]docker搭建私有仓库(ssl、身份认证)
docker搭建私有仓库(ssl、身份认证)
环境:CentOS 7、Docker 1.13.1
CentOS 7相关:
https://www.cnblogs.com/ttkl/p/11041124.html
Docker相关(服务端):
- 安装docker
yum -y install docker-io
- 启动docker,并配置开机启动
systemctl start docker
systemctl enable docker
- 拉取registry镜像
docker pull registry:2
- 生成ssl密钥
# 创建ssl相关目录
mkdir ~/certs
# 生成ssl密钥
openssl req -newkey rsa:2048 -nodes -sha256 -keyout certs/test.registry.com.key -x509 -days 365 -out certs/test.registry.com.crt
- 创建用户
# 创建registry登陆用户文件夹
mkdir ~/auth
# 创建private用户
docker run --entrypoint htpasswd registry:2 -Bbn admin admin > ~/auth/htpasswd
# 删除运行的容器
docker stop [CONTAINER ID]
docker rm [CONTAINER ID]
- 后台运行容器(私有仓库)
docker run -d -p 5000:5000 --restart=always --name registry \
-v ~/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v ~/data:/var/lib/registry \
-v ~/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/test.registry.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/test.registry.com.key \
registry:2
可能遇到以下问题:
#1、open /certs/xx.crt: permission denied(类似问题)
解决:①chcon -Rt svirt_sandbox_file_t ~/certs/
②禁用selinux即可(详细请看centos7的安装)
#2、failed with status: 401 Unauthorized
解决:输入正确的用户名和密码
#3、The push refers to a repository [x.x.x.x:5000/registry]
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
解决:*修改/etc/pki/tls/openssl.cnf配置[ v3_ca ]
[ v3_ca ]
# Extensions for a typical CA
subjectAltName = IP:x.x.x.x
*重启docker
*重新配置
#4、The push refers to a repository [x.x.x.x:5000/registry]
Get https://x.x.x.x:5000/v1/_ping: x509: certificate signed by unknown authority
解决:添加私有证书到docker
*在/etc/docker/certs.d/目录下创建x.x.x.x:5000文件夹
*复制~/certs/*.crt文件到x.x.x.x:5000文件夹下即可
Docker相关(客户端):
tls加密通讯:
- 创建文件夹
mkdir /ssl
cd /ssl
- 创建ca密钥
openssl genrsa -aes256 -out ca-key.pem 4096
- 创建ca证书
openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem
- 创建服务器私钥
openssl genrsa -out server-key.pem 4096
- 签名私钥
openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr
- 使用ca证书与私钥证书签名
openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
- 生成客户端密钥
openssl genrsa -out key.pem 4096
- 签名客户端
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
- 创建配置文件
echo extendedKeyUsage=clientAuth > extfile.cnf
- 签名证书
openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
- 删除多余文件
rm -rf ca.srl client.csr extfile.cnf server.csr
docker配置文件:
# 查看docker配置文件
systemctl status docker.service
# 修改配置文件,添加两行内容
ExecStart=...
--tlsverify --tlscacert=/ssl/ca.pem --tlscert=/ssl/server-cert.pem --tlskey=/ssl/server-key.pem
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:5555
...
# 重启docker
systemctl daemon-reload
systemctl restart docker.service
本机别名:
Linux:
# 配置文件位置
/etc/hosts
# 添加一行内容
ip servername
Windows:
# 配置文件位置
C:\Windows\System32\drivers\etc\hosts
# 添加一行内容
ip servername
[Docker]docker搭建私有仓库(ssl、身份认证)的更多相关文章
- Docker:搭建私有仓库(Registry 2.4)
一.背景 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候, ...
- docker registry-v2 搭建私有仓库
参考官方文档:https://docs.docker.com/registry/deploying/ 参考 :http://www.tuicool.com/articles/6jEJZj 本例子使用两 ...
- Docker Registry搭建私有仓库
利用Registry镜像搭建Docker私有仓库遇到了很多坑,说来也是找到的资料都是杂而不精的东西,所以也没少走了弯路,现在回过头看去感觉好多坑还是别人给挖的··· 不过努力的最终结果还是好的,因为找 ...
- Ubuntu Docker Registry 搭建私有仓库
服务器版本 Ubuntu 16.04 LTS. 安装命令: $ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --rest ...
- docker之搭建私有仓库
一.私有仓库 1.防止网络原因:下载慢,访问不到的情况,需要在内网搭建一个私有仓库. 二.仓库镜像下载 [root@node03 ~]# docker pull registry 三.创建私有仓库容器 ...
- Docker 在搭建私有仓库配置镜像时候报错
今天搞私有镜像报了个错 ,看了,好久原来是 多了个空格 服务失败,因为控制进程退出时带有错误代码.参见"systemctl状态docker".详细信息参见"服务" ...
- docker进阶-搭建私有企业级镜像仓库Harbor
为什么要搭建私有镜像仓库 对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...
- 菜鸟系列docker——搭建私有仓库harbor(6)
docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...
- Docker搭建私有仓库
1,下载仓库镜像. docker pull registry //主要用于搭建私有仓库的. 2,将宿主机端口映射到容器中去,容器的5000端口是不能更改的. docker run -d -p ...
随机推荐
- NET Core:搭建私有Nuget服务器以及打包发布Nuget包
docker 安装 https://www.cnblogs.com/liuxiaoji/p/11014329.html 1.使用docker搭建私有Nuget服务器 docker run -d -p ...
- Aveva Marine 新建项目001
1# 项目代号定义,三个字符,例如Abc 2# 新建文件夹,命名为“Abc” 3# 新建文件名为evars.bat文件,放到项目文件夹的根目录 内容为: SET Abc000=项目文件夹路径\Abc0 ...
- CentOS6.8安装Python3.6.3
1.linux下安装python3 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum install zlib-devel bzip2-devel ...
- 服务端相关知识学习(四)之Zookeeper启动过程
在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时 ...
- 02 Go程序执行流程
一.把源码编译成二进制后执行 .go代码源文件 => go build => 可执行文件(.exe文件或者linux二进制文件) => 运行结果 二.对源码直接运行 .go源代码文件 ...
- spring boot 使用RedisTemplate
1导入包 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> ...
- 织梦dedecms自定义功能函数(1):调用body中的图片(可多张)
前言 岛主会整理或者开发一系列常用功能函数.所有自定义功能函数都是放在\include\extend.func.php文件里. 这次织梦自定义功能函数功能为:独立提取 body字段中(可以是自定义字段 ...
- Oracle【三表的联合查询】
,'北京','彰显大气'); ,'上海','繁华都市'); ,'广州','凸显舒适'); ,'深圳','年轻气氛'); ,'北上广深','不相信眼泪'); commit; ; ; ; ; ; 员工信息 ...
- 关于C++跨平台
问题:C++是怎么跨平台的呢? 答: 因为支持C++语言的各个平台的架构不同(比如CPU能够处理的指令集不一样),所以一份C++源代码要想在另一个操作系统平台上执行,就必须用该平台相对应的C++代码编 ...
- 使用 jenkins 为 nginx 增加上下文
每次需要在Nginx增加上下文,都需要添加如下两段 server.conf upstream serverdownloadPage { server 10.11.19.6:3023; } ht ...