本文共 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]#
此步骤需要 安装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/