当前位置: 首页 > news >正文

不重启Docker能添加自签SSL证书镜像仓库吗?

应用背景

在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker。

那么,不重启Docker能添加自签SSL证书镜像仓库吗?

可以,在文中会找到答案。

实现思路

实现思路来自Docker官网(https://docs.docker.com/registry/insecure/),大意是通过复制镜像仓库的自签证书到操作系统目录,或者到docker的配置目录中。这样就可实现不重启使用该仓库了。

这里有个问题是:“某些情况下,例如镜像仓库不是我们搭建的 或 拿不到证书,这时候怎么办?”

基于命令是可以拿得到的

实现方式

命令行

通过openssl输出X.509证书到docker证书目录中实现需求。

# 创建镜像仓库证书目录,xxx.com.cn需替换为镜像仓库域名,如端口非443则需要追加:port
mkdir -p /etc/docker/certs.d/xxx.com.cn# 使用openssl获取镜像仓库的X.509证书,写入刚创建目录下文件中,如端口非443则需替换
echo -n | openssl s_client -connect xxx.com.cn:443 2>/dev/null | openssl x509 > /etc/docker/certs.d/xxx.com.cn/ca.crt# 测试登录、拉取等操作
docker login xxx.com.cn
docker pull xxx.com.cn/somepath/nginx:latest

示例:

mkdir -p /etc/docker/certs.d/harbor.test.com.cn:5000echo -n | openssl s_client -connect harbor.test.com.cn:5000 2>/dev/null | openssl x509 > /etc/docker/certs.d/harbor.test.com.cn:5000/ca.crtdocker login harbor.test.com.cn:5000

Shell脚本

cat > add-insecure-repo.sh <<EOF
#/bin/bash
if [ "\$1x" == "x" ]; thenecho "请输入镜像仓库地址";exit;
fiREPO=\$1
#包含:443需去除
if [[ "\$1" =~ ":443" ]]; thenREPO=\${1%:443*}
fi
#包含https://需去除
if [[ "\$REPO" =~ "https://" ]]; thenREPO=\${REPO#*https://}
fimkdir -p /etc/docker/certs.d/\$REPO
#带端口号的不加:443,不带的需要加
if [[ "\$REPO" =~ ":" ]]; thenecho -n | openssl s_client -connect \$REPO 2>/dev/null | openssl x509 > /etc/docker/certs.d/\$REPO/ca.crt
elseecho -n | openssl s_client -connect \$REPO:443 2>/dev/null | openssl x509 > /etc/docker/certs.d/\$REPO/ca.crt
fi
EOF# 执行示例
sh add-insecure-repo.sh harbor.test.com.cn:5000

写作不易,如果有用就点个赞再走呗!~

参考:

  • Shell字符串截取(非常详细) (biancheng.net)
  • https://docs.docker.com/registry/insecure/
http://www.lryc.cn/news/126678.html

相关文章:

  • Ajax介绍
  • docker 学习--02 常用命令
  • socks5 保障网络安全与爬虫需求的完美融合
  • 构建智能医疗未来:人工智能在线上问诊系统开发中的应用
  • css3-grid:grid 布局 / 基础使用
  • 如何在windows电脑安装多个tomcat服务器和乱码问题
  • flutter:webview_flutter的简单使用
  • Ansys Zemax | 手机镜头设计 - 第 1 部分:光学设计
  • jvm从入门到精通
  • [NLP]LLM 训练时GPU显存耗用量估计
  • Unity引擎使用InteriorCubeMap采样制作假室内效果
  • Gin安装解决国内go 与 热加载
  • 安防监控视频云存储平台EasyCVRH.265转码功能更新:新增分辨率配置
  • Linux 创建用户赋予root权限,并限定登录ip
  • 基于令牌级 BERT 嵌入的趋势生成句子级嵌入
  • 计算机视觉目标检测性能指标
  • 什么是webpack?如何在项目中安装配置webpack?
  • linux两台服务器互相备份文件(sshpass + crontab)
  • Flask框架-配置日志(1):flask使用日志
  • 每天一道leetcode:1192. 查找集群内的关键连接(图论困难tarjan算法)
  • 解决Windows系统远程登陆后vscdoe无法输入字符,键盘没有反应,鼠标可以点击,没有反应
  • axios同一个接口,同时接收 文件 或者 数据
  • 【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云
  • 算法通关村第九关 | 二叉树查找和搜索树原理
  • jenkins gitlab 安装
  • Vue2(组件开发)
  • (二)结构型模式:8、代理模式(Proxy Pattern)(C++示例)
  • 代码审计-ASP.NET项目-未授权访问漏洞
  • 爬虫逆向实战(十四)--某培训平台登录
  • GT Code - 图译算法编辑器(集成QT、C++、C、Linux、Git、java、web、go、高并发、服务器、分布式、网络编程、云计算、大数据项目)