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

Portainer.io安装并配置Docker远程访问及CA证书

Portainer.io安装并配置Docker远程访问及CA证书


文章目录

    • Portainer.io安装并配置Docker远程访问及CA证书
      • 一.安装 Portainer.io
        • 2.启动容器
      • 二.docker API远程访问并配置CA安全认证
        • 1.配置安全(密钥)访问
        • 2.补全CA证书信息
        • 3.生成server-key.pem
        • 4.创建服务端签名请求证书文件
        • 5.创建服务端扩展配置文件 extfile.cnf
        • 6.创建签名生效的服务端证书文件
        • 7.创建客户端私钥
        • 8.创建客户端签名请求证书文件
        • 7.创建客户端扩展配置文件 extfile-client.cnf
        • 8.创建签名生效的客户端证书文件
        • 9.删除临时文件
        • 10.设置文件权限
        • 11.配置docker服务端
      • 三.Portainer配置使用客户端证书

一.安装 Portainer.io

version: '3.3'
services:portainer:image: portainer/portainer-ce:latestcontainer_name: portainerports:- "8000:8000"- "9443:9443"- "9000:9000"restart: alwaysvolumes:- /var/run/docker.sock:/var/run/docker.sock- ./portainer_data:/data
2.启动容器
docker-compose up -d 

查看是否启动成功

docker ps -a | grep portainer

image-20240620103924858

查看日志

docker logs -f portainer

image-20240620104856162

在浏览器输入我们部署服务的ip:port 访问服务,第一次访问需要设置管理员密码。

访问地址:http://<your ip>:9000

登陆之后就是这样

image-20240620105015316

二.docker API远程访问并配置CA安全认证

1.配置安全(密钥)访问

创建CA私钥和CA公钥
创建一个ca文件夹用来存放私钥跟公钥

mkdir -p /usr/local/ca
cd /usr/local/ca

在Docker本机,生成CA私钥和公钥

openssl genrsa -aes256 -out ca-key.pem 4096

执行上述指令,会输入密码。此密码需记住,后面的步骤也需要。

image-20240620112406300

可以看到已经生成ca-key.pem证书文件

image-20240620112554479

2.补全CA证书信息
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

不切换目录,继续执行上述指令,会要求录入信息。

#输入上一步设置的密码
Enter pass phrase for ca-key.pem: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.
# 国家:CN
Country Name (2 letter code) [XX]: CN
# 省份: 可以不填,直接回车
State or Province Name (full name) []:
# 地市:可以不填,直接回车
Locality Name (eg, city) [Default City]:
# 公司: 可以不填,直接回车
Organization Name (eg, company) [Default Company Ltd]:
# 组织: 可以不填,直接回车
Organizational Unit Name (eg, section) []:
# 服务器地址或域名,按要求填写
Common Name (eg, your name or your server's hostname) []:  <主机IP>
# 邮箱联系方式,可以不填,直接回车
Email Address []:

到这一步CA证书就创建完成了,还需要去创建服务器密钥和证书签名请求(CSR),确保“通用名称”与Docker时使用的主机名相匹配。

3.生成server-key.pem
openssl genrsa -out server-key.pem 4096
4.创建服务端签名请求证书文件
openssl req -subj "/CN=$<主机ip>" -sha256 -new -key server-key.pem -out server.csr
5.创建服务端扩展配置文件 extfile.cnf
echo "subjectAltName = IP:$<主机ip>,IP:0.0.0.0" > extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf
6.创建签名生效的服务端证书文件

输入之前的密码

openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

image-20240620115930339

7.创建客户端私钥
openssl genrsa -out key.pem 4096
8.创建客户端签名请求证书文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
7.创建客户端扩展配置文件 extfile-client.cnf
echo "extendedKeyUsage = clientAuth" > extfile-client.cnf
8.创建签名生效的客户端证书文件
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf

输入密码。

9.删除临时文件
rm -f client.csr server.csr extfile.cnf extfile-client.cnf
10.设置文件权限
chmod 0400 ca-key.pem key.pem server-key.pem
chmod 0444 ca.pem server-cert.pem cert.pem
11.配置docker服务端

修改vim /lib/systemd/system/docker.service文件中的ExecStart这一行,如下:

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca-new-1/ca.pem --tlscert=/usr/local/ca-new-1/server-cert.pem --tlskey=/usr/local/ca-new-1/server-key.pem  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock

其中/usr/local/ca-new-1/是刚才生产证书的目录。

修改之后重启docker服务

#重启
systemctl daemon-reload && systemctl restart docker

三.Portainer配置使用客户端证书

访问Portainer.io

image-20240622141105867

image-20240622141123973

image-20240622141220870

此处的Docker API URL是二.11步骤中的,-H tcp://0.0.0.0:2375这一段代码配置的端口号,ip则是主机IP。

然后需要从服务器上下载生成的ca文件。

-r--r--r--  1 root root 1952 Jun 20 11:11 ca.pem
-r--r--r--  1 root root 1883 Jun 20 11:12 cert.pem
-r--------  1 root root 3268 Jun 20 11:12 key.pem

然后依次对应上图配置中的

image-20240622141525548

配好之后点击如下按钮

image-20240622141630013

显示连接成功则表示已经配好,然后就可以在Portainer中看到目标主机的docker信息了

image-20240622141934836

以下是一个快速生成ca证书的脚本

#!/bin/ship="<your ip>"
password="123456"
dir="/usr/local/ca-new-1" # 证书生成位置
validity_period=3650    # 证书有效期10年,单位是天# 如果目录不存在则创建目录,否则删除重建
if [ ! -d "$dir" ]; thenecho "$dir 不存在,将创建目录"mkdir -p $dir
elseecho "$dir 存在,将删除并重建"rm -rf $dirmkdir -p $dir
ficd $dir || exit# 1. 创建根证书 RSA 私钥
openssl genrsa -aes256 -passout pass:"$password" -out ca-key.pem 4096# 2. 创建 CA 证书
openssl req -new -x509 -days $validity_period -key ca-key.pem -passin pass:"$password" -sha256 -out ca.pem -subj "/C=NL/ST=./L=./O=./CN=$ip"# 3. 创建服务端私钥
openssl genrsa -out server-key.pem 4096# 4. 创建服务端签名请求证书文件
openssl req -subj "/CN=$ip" -sha256 -new -key server-key.pem -out server.csr# 创建服务端扩展配置文件 extfile.cnf
echo "subjectAltName = IP:$ip,IP:0.0.0.0" > extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf# 5. 创建签名生效的服务端证书文件
openssl x509 -req -days $validity_period -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out server-cert.pem -extfile extfile.cnf# 6. 创建客户端私钥
openssl genrsa -out key.pem 4096# 7. 创建客户端签名请求证书文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr# 创建客户端扩展配置文件 extfile-client.cnf
echo "extendedKeyUsage = clientAuth" > extfile-client.cnf# 8. 创建签名生效的客户端证书文件
openssl x509 -req -days $validity_period -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out cert.pem -extfile extfile-client.cnf# 删除临时文件
rm -f client.csr server.csr extfile.cnf extfile-client.cnf# 设置文件权限
chmod 0400 ca-key.pem key.pem server-key.pem
chmod 0444 ca.pem server-cert.pem cert.pemecho "证书生成完成"

Docker安装和卸载(centos)
Ubuntu安装指定版本Docker

相关文章:

Portainer.io安装并配置Docker远程访问及CA证书

Portainer.io安装并配置Docker远程访问及CA证书 文章目录 Portainer.io安装并配置Docker远程访问及CA证书一.安装 Portainer.io2.启动容器 二.docker API远程访问并配置CA安全认证1.配置安全(密钥)访问2.补全CA证书信息3.生成server-key.pem4.创建服务端签名请求证书文件5.创建…...

探索 Transformer²:大语言模型自适应的新突破

目录 一、来源&#xff1a; 论文链接&#xff1a;https://arxiv.org/pdf/2501.06252 代码链接&#xff1a;SakanaAI/self-adaptive-llms 论文发布时间&#xff1a;2025年1月14日 二、论文概述&#xff1a; 图1 Transformer 概述 图2 训练及推理方法概述 图3 基于提示的…...

Flutter 多终端测试 自定义启动画面​​​​​​​ 更换小图标和应用名称

多终端测试 flutter devices flutter run -d emulator-5554 flutter run -d emulator-5556 自定义启动画面 之前&#xff1a; 进入assert 3x 生成 1x 2x dart run flutter_native_splash:create dart run flutter_native_splash:remove 现在&#xff08;flutter_nativ…...

rsarsa-给定pqe求私钥对密文解密

题目&#xff1a; Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.p 96484230290105156765905517400104265349457376392357398006439893520398525072984913995610350091634270503701075707336333…...

flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈

flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈 开发背景 可能大家听过过蓝湖可以转ui设计图为vue.js&#xff0c;react native代码&#xff0c;那么请问听说过将figma的设计图转换为flutter源代码吗?本文优雅草央千澈带…...

Deep4SNet: deep learning for fake speech classification

Deep4SNet&#xff1a;用于虚假语音分类的深度学习 摘要&#xff1a; 虚假语音是指即使通过人工智能或信号处理技术产生的语音记录。生成虚假录音的方法有"深度语音"和"模仿"。在《深沉的声音》中&#xff0c;录音听起来有点合成&#xff0c;而在《模仿》中…...

3 前端: Web开发相关概念 、HTML语法、CSS语法

文章目录 前言:导学1 Web开发相关概念2 Web标准(网页标准)3 软件架构(CS/BS)(1)C/S: Client/Server 客户端 / 服务器端(2)B/S: Browser/Server 浏览器 / 服务器端VSCode配置前段开发环境一、HTML概念1 概念2 HTML快速入门(1)语法快速入门(2)VSCode一个 !(快捷键…...

SpringBoot工程快速启动

1.问题导入 以后我们和前端开发人员协同开发&#xff0c;而前端开发人员需要测试前端程序就需要后端开启服务器&#xff0c;这就受制于后端开发人员。 为了摆脱这个受制&#xff0c;前端开发人员尝试着在自己电脑上安装 Tomcat 和 Idea &#xff0c;在自己电脑上启动后端程序&a…...

Unity WebGL:本机部署,运行到手机

Unity WebGL 简单介绍一下Unity WebGL的技术方案&#xff0c;在WebGL平台出包后&#xff0c;Unity的运行时C/C代码是通过Emscripten编译成了WebAssembly/Wasm&#xff1b;游戏逻辑部分的C#代码是先通过il2cpp转成C再编译转成的Wasm&#xff0c;Unity程序就就可以在支持WebAsse…...

【线性代数】行列式的概念

d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1​,i2​,⋯,in​∑​(−1)σ(i1​,⋯,in​)a1…...

Android SystemUI——StatusBar视图创建(六)

上一篇文章我们介绍了 StatusBar 的构建过程,在 makeStatusBarView() 中获得 FragmentHostManager,用来管理 StatusBar 的窗口。 一、状态栏视图 在得到 FragmentHostManager 实例对象之后,还会继续调用 addTagListener() 方法设置监听对象,然后获取 FragmentManager 并开…...

Picocli 命令行框架

官方文档 https://picocli.info/ 官方提供的快速入门教程 https://picocli.info/quick-guide.html 使用 Picocli 创建命令行应用程序 Picocli 是一个用于构建 Java 命令行应用的强大框架&#xff0c;它简化了参数解析和帮助消息生成的过程。 下面是如何使用 Picocli 构建简单命…...

spring-cloud-starter-gateway 使用中 KafkaAppender的问题

公司需要将应用日志上报到kafka&#xff0c;以供分析与查看。 结合logback可以完成此功能&#xff0c;大致配置如下&#xff1a; <appender name"KafkaAppender" class"com.github.danielwegener.logback.kafka.KafkaAppender"><encoder class&…...

【全套】基于分类算法的学业警示预测信息管理系统

【全套】基于分类算法的学业警示预测信息管理系统 【摘 要】 随着网络技术的发展基于分类算法的学业警示预测信息管理系统是一种新的管理方式&#xff0c;同时也是现代学业预测信息管理的基础&#xff0c;利用互联网的时代与实际情况相结合来改变过去传统的学业预测信息管理中…...

Elasticsearch Python 客户端是否与自由线程 Python 兼容?

作者&#xff1a;来自 Elastic Quentin_Pradet 在这篇文章中&#xff0c;我们将进行一些实验&#xff0c;看看 Python Elasticsearch 客户端是否与新的 Python 3.13 自由线程&#xff08;free-threading&#xff09;版本兼容&#xff0c;其中 GIL 已被删除。 介绍 但首先&…...

基于大语言模型的组合优化

摘要&#xff1a;组合优化&#xff08;Combinatorial Optimization, CO&#xff09;对于提高工程应用的效率和性能至关重要。随着问题规模的增大和依赖关系的复杂化&#xff0c;找到最优解变得极具挑战性。在处理现实世界的工程问题时&#xff0c;基于纯数学推理的算法存在局限…...

#CSS混合模式:解决渐变背景下的文字可见性问题

在现代网页设计中&#xff0c;渐变背景的使用越来越普遍。然而&#xff0c;当我们在渐变背景上放置文字时&#xff0c;常常会遇到一个问题&#xff1a;文字在某些背景颜色下可能变得难以阅读。今天&#xff0c;我们将探讨一个优雅的解决方案&#xff1a;使用CSS混合模式。 问题…...

Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、信息窗体DOM元素 3.2、创建Overlay 3.3、创建一个点 3.4、给点初始化点击事件 3.5、完整代码 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 初始化变量&#xff1a; d…...

实战threeJS数字孪生开源 数字工厂

threeJS数字孪生 数字工厂 设备定位 基于three.js的数字工厂开源项目介绍 一、项目概述 本项目是一款基于three.js的数字工厂项目&#xff0c;旨在通过3D可视化技术&#xff0c;为工业制造领域提供一个直观、高效、智能的生产监控与管理平台。该项目结合了现代前端技术栈&…...

【Python基础篇】——第3篇:从入门到精通:掌握Python数据类型与数据结构

第3篇&#xff1a;数据类型与数据结构 目录 Python中的数据类型概述列表&#xff08;List&#xff09; 创建列表列表的基本操作列表方法列表推导式 元组&#xff08;Tuple&#xff09; 创建元组元组的基本操作元组的不可变性 字典&#xff08;Dictionary&#xff09; 创建字典…...

网易云音乐NCM转MP3终极指南:ncmdump工具完整使用教程

网易云音乐NCM转MP3终极指南&#xff1a;ncmdump工具完整使用教程 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经从网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在特定播放器上收听&#xff1f;NCM格式的限制让音乐…...

苏州创新药20年,站上全球产业洗牌暴风眼

一个城市的创新药产业集群如何从无到有&#xff0c;又如何在全球化临界点寻找自己的位置。文&#xff5c;徐鑫编&#xff5c;任晓渔过去一年多&#xff0c;苏州是全球创新药产业版图中一个绕不过去的城市。大额海外授权交易频繁传出&#xff0c;在中国高端制造走出去的背景下&a…...

第二周(第12周)

1.单电源供电的二阶低通滤波器2.功率放大电路...

echarts中heatmap鼠标滚动禁用缩放,向下滚动

配置如下效果如下...

QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由

QMCDecode终极指南&#xff1a;3步解锁QQ音乐加密格式&#xff0c;实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目…...

三步实现跨架构程序兼容:Box64高效架构转换指南

三步实现跨架构程序兼容&#xff1a;Box64高效架构转换指南 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 你是否曾在ARM64…...

保姆级教程:Windows系统下Arcgis 10.2从下载、安装到汉化一次搞定(附常见License启动失败解决方案)

Windows系统下Arcgis 10.2完整安装与汉化实战指南第一次接触Arcgis的新手往往会被复杂的安装流程和神秘的License Manager搞得晕头转向。作为一款功能强大的地理信息系统软件&#xff0c;Arcgis在科研、城市规划、环境监测等领域有着广泛应用&#xff0c;但它的安装过程确实会让…...

Unity iOS构建报错SDK version is 0的根因与精准修复

1. 这个报错不是Unity在“发脾气”&#xff0c;而是工程配置在“装死”刚接手一个老项目&#xff0c;打开Unity编辑器&#xff0c;点Build Settings准备打包iOS&#xff0c;结果弹出一行红字&#xff1a;“SDK version is 0, cannot build”。我第一反应是——这什么鬼&#xf…...

Adobe-GenP 3.0:轻松激活Adobe全家桶的完整指南

Adobe-GenP 3.0&#xff1a;轻松激活Adobe全家桶的完整指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款专为Adobe Creative Cloud系列软件…...

如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南

如何用WaveTools终极优化《鸣潮》游戏性能&#xff1a;从卡顿到丝滑的完整指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 如果你正在玩《鸣潮》却频繁遭遇帧率波动、画面卡顿或操作延迟&#xff0c;那…...