docker 本地仓库创建 安装认证和应用(centos)

本文详细介绍如何使用Docker搭建带有认证功能的私有仓库,包括安装openssl生成自定义CA证书,创建仓库用户名与密码,配置容器挂载认证及证书目录,以及客户端登录流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

[root@yj138 tomcat]# docker images
REPOSITORY                                                          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry                                                            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 incorporated
into 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 blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:jiangxi
Locality Name (eg, city) [Default City]:nanchang
Organization Name (eg, company) [Default Company Ltd]:name
Organizational Unit Name (eg, section) []:name
Common 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:5000
sudo 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:5000
Username: root
Password: 

Login Succeeded
root@abc-virtual-machine:/etc# 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值