博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 本地仓库创建 安装认证和应用(centos)
阅读量:2206 次
发布时间:2019-05-04

本文共 3343 字,大约阅读时间需要 11 分钟。

docker 的安装和仓库镜像容器拉取,参考之前的文档,这里默认已经安装了docker且拉取了镜像 daocloud.io/registry:2.5

[root@yj138 tomcat]# docker imagesREPOSITORY                                                          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEregistry                                                            2.5                 2942bb2fcd88        3 months ago        37.77 MB[root@yj138 tomcat]#

一、 创建自定义签发的CA证书

此步骤需要 安装openssl工具

yum install -y openssl

 注意在生成签名文件过程中,需要指定该域名 ,然后客户端docker 的hosts 内添加对该域名的解析,且 客户端docker 新增启动参数 --insecure-registry youregistry.com:端口 , 重启docker

不然,在客户端登录时,爆出如下错误:

 Error response from daemon: Get https://172.2.98.46:5000/v2/: x509: cannot validate certificate for 172.2.98.46 because it doesn't contain any IP SANs

mkdir -p ~/docker/crts && openssl req -newkey rsa:4096 -nodes -sha256 -keyout ~/docker/certs/domain.key -x509 -days 3650 -out ~/docker/certs/domain.crt

输出:

You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:jiangxiLocality Name (eg, city) [Default City]:nanchangOrganization Name (eg, company) [Default Company Ltd]:nameOrganizational Unit Name (eg, section) []:nameCommon Name (eg, your name or your server's hostname) []:本机IP 或者域名Email Address []:1111111@qq.com[root@yj138 tomcat]#

进入到目录  可看到有两个文件 domain.crt  domain.key,   注意,如果使用域名

二、添加多用户,创建仓库用户名与密码

首先,创建存储用户与密码文件夹

mkdir ~/docker/auth

添加仓容镜像的用户名与密码

docker run --rm --entrypoint htpasswd registry:2.5 -Bbn root yaspeed >>~/docker/auth/htpasswd

三、重新启动容器,挂载认证目录和密码目录

先停止所有容器,重启动docker 服务  service  docker restart,   然后重新创建容器

docker run -tid --name registry -p 5000:5000 -v ~/docker/auth:/auth \  -e "REGISTRY_AUTH=htpasswd" \  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \  -v ~/docker/certs:/certs \  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \  registry:2.5

至此,带认证功能的docker仓库容器,创建成果.

四、客户端登录仓库容器

将在服务上生成的证书  domain.crt  拷贝到客户端,

Ubuntu 系统下:

放置在 /etc/docker/certs.d/服务器IP:端口/ 下,并修改命名 ca.crt

sudo mkdir -p ~/certs.d/yaspeed.com:5000sudo cp  ~/domain.crt /etc/docker/certs.d/yaspeed.com:5000/ca.crt

注意,这里  服务器IP:端口  为远程仓库的IP地址,docker login  服务器IP:端口  一直,同时 服务器IP与新建证书 用户的 IP一致。如果使用域名,这里就用域名,但是注意,需要在  /etc/hosts 文件内,指明 域名对应的IP地址。 那么,登录就可以用 域名:端口方式登录。

echo " registryIP yaspeed.com" >> /etc/hosts

Redhat系统下:直接将crt文件拷贝到 目录 /usr/local/share/ca-certificates/ 下

cp ~/domain.crt /usr/local/share/ca-certificates/domain.crt

否则,将爆出如下错误

Error response from daemon: Get https://172.2.98.46:5000/v2/: x509: certificate signed by unknown authority

同时,针对docker 高版本 17.3.0以上,在/etc/docker/daemon.json 内新增参数

“insecure-registries" : ["对应IP:端口" 或者 “对应域名:端口”]

然后, systemctl darmon-reload (ubuntn系统)   service  docker restart.

针对低版本的 修改  docker.service 文件,在 ExecStart=/usr/bin/dockerd   之后,添加启动参数 --insecue-registry  仓库IP:端口

或者  --insecue-registry  仓库域名:端口

登录,

docker login 172.2.98.46:5000

如果使用域名,则 使用域名加 端口 登录仓库

docker login dockeryaspeed.com:5000Username: rootPassword: Login Succeededroot@abc-virtual-machine:/etc#

 

转载地址:http://jijyb.baihongyu.com/

你可能感兴趣的文章
【操作系统】内存碎片产生原因及终极解决办法
查看>>
幂等性验证思想
查看>>
DB理论--数据存储方式
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
查看>>
arraylist扩容时机java8
查看>>
logback中additivity的理解
查看>>
一篇文章搞懂hash,hashcode,equals,==的用法
查看>>
mysql数据库,悲观锁。for update 的用法。
查看>>
springboot+jta+atomikos多数据源和 springboot+mybatisplus+aop实现数据库读写分离而引发的一些思考
查看>>
java面试中常考的一些面试sql语句
查看>>
一个字节等于多少位?
查看>>
帧框架frameset的用法总结
查看>>
java1.8中创建hashmap的初始化大小设置标准
查看>>
mark一下,service的实现层没有加@service注解。
查看>>
jq对象转换成js对象。已经jq的复合选择器。
查看>>
(一)alin‘s mysql学习笔记----概述
查看>>
(二)alin’s mysql学习笔记----mysql的存储引擎
查看>>
(三)alin’s mysql学习笔记----常用的join连接查询
查看>>