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

news2025/2/8 8:31:54

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:latest
    container_name: portainer
    ports:
      - "8000:8000"
      - "9443:9443"
      - "9000:9000"
    restart: always
    volumes:
      - /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/sh

ip="<your ip>"
password="123456"
dir="/usr/local/ca-new-1" # 证书生成位置
validity_period=3650    # 证书有效期10年,单位是天

# 如果目录不存在则创建目录,否则删除重建
if [ ! -d "$dir" ]; then
  echo "$dir 不存在,将创建目录"
  mkdir -p $dir
else
  echo "$dir 存在,将删除并重建"
  rm -rf $dir
  mkdir -p $dir
fi

cd $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.pem

echo "证书生成完成"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

监控 Grafana介绍和云服务器安装

Grafana 简介 官网地址&#xff1a;https://grafana.com/用Go语言开发的开源数据可视化工具&#xff0c;可以做数据监控和数据统计&#xff0c;带有告警功能。可视化&#xff1a;支持快速灵活的客户端图表&#xff0c;面板插件有许多不同方式的可视化指标和日志&#xff0c;官…

FaceFusionSharp OnnxRuntime版 视频换脸

FaceFusionSharp OnnxRuntime版 视频换脸 目录 效果 项目 代码 下载 其他 效果 FaceFusionSharp OnnxRuntime版效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Threading; using System.Window…

SO-CNN-SVM,基于SO蛇优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)-MATLAB实现

SO-CNN-SVM&#xff0c;基于SO蛇优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)-MATLAB实现 1. SO蛇优化算法&#xff08;Snake Optimization Algorithm, SO&#xff09; SO算法是一种启发式优化算法&#xff0c;灵感来自于蛇的捕食行为和社会行为…

《计算机英语》 Unit 5 Networking 网络

Section A Networking 网络 The need to share information and resources among different computers has led to linked computer systems, called networks, in which computers are connected so that data can be transferred from machine to machine. 不同计算机之间共享…

“脏读”、“幻读”、“不可重复读”

“脏读”、“幻读”、“不可重复读” 1.概念说明 “脏读”、“幻读”、“不可重复读”是数据库事务的概念。 “脏读”是指一个事务中访问到了另外一个事务未提交的数据。 “不可重复读”是指在一个事务内根据同一个条件对数据进行多次查询&#xff0c;但是结果却不一致&…

OpenCV 特征点检测与匹配

一 OpenCV特征场景 ①图像搜索&#xff0c;如以图搜图&#xff1b; ②拼图游戏&#xff1b; ③图像拼接&#xff0c;将两长有关联得图拼接到一起&#xff1b; 1 拼图方法 寻找特征 特征是唯一的 可追踪的 能比较的 二 角点 在特征中最重要的是角点 灰度剃度的最大值对应的…

少儿编程是骗局吗?少儿编程到底在学什么

少儿编程是一种有益的教育方式&#xff0c;它可以帮助孩子们培养逻辑思维、创造力和解决问题的能力。 少儿编程&#xff1a;开启未来的密码 在当今数字化的时代&#xff0c;编程已经成为一项重要的技能。而少儿编程&#xff0c;作为培养孩子们计算思维和创造力的新兴教育领域&…

泰国普吉岛与曼谷7天自由行路线与踩坑经历

本文介绍泰国6日自由行&#xff08;普吉岛3日、曼谷3日&#xff09;的每日详细行程、游览心得、避坑经历等。 2024年06月初&#xff0c;我们一行5人前往泰国普吉岛与曼谷等2地&#xff0c;进行了一共为期7天的旅行&#xff1b;其中真正花在游玩上的时间大概是5至6天。在这里就介…

深入讲解C++基础知识(一)

目录 一、基本内置类型1. 类型的作用2. 分类3. 整型3.1 内存描述及查询3.2 布尔类型 —— bool3.3 字符类型 —— char3.4 其他整型 4. 有符号类型和无符号类型5. 浮点型6. 如何选择类型7. 类型转换7.1 自动类型转换7.2 强制类型转换7.3 类型转换总结 8. 类型溢出8.1 注意事项 …

【Mac】Pixelmator Pro for Mac(媲美PS的修图软件)软件介绍

软件介绍 Pixelmator Pro是一款功能强大的图像编辑软件&#xff0c;专为macOS平台设计。它结合了丰富的图像编辑功能和直观的用户界面&#xff0c;适合专业摄影师、设计师以及图像编辑爱好者。以下是Pixelmator Pro的一些主要特点和功能介绍&#xff1a; 功能特色 非破坏性编…

罗克韦尔Rockwell EDI 项目案例

项目挑战 企业A有两个工厂需要接受来自Rockwell的订单&#xff0c;出于成本考虑&#xff0c;两个工厂需要使用同一套EDI系统实现对接&#xff0c;因此在EDI系统中要区分发给不同工厂的订单数据。除此之外&#xff0c;此项目中涉及到了EDI系统与SAP系统的集成&#xff0c;SAP系统…

ArmSoM-Sige7/5/1 和树莓派5规格比较

引言 在当今快速发展的嵌入式系统领域&#xff0c;选择一款性能强大、功能丰富的开发板对于项目的成功至关重要。本文将介绍并比较 Sige7、Sige5、Raspberry Pi 5 和 Sige1 这四款开发板的关键规格和特性&#xff0c;帮助开发者和爱好者选择最适合其需求的平台。 ArmSoM-Sige…

【鸿蒙踩坑记录】解决:list组件滑动至左边或右边,回弹效果过大问题

一、问题描述 开发过程中使用List组件&#xff0c;当内容超过一屏时可出现滚动效果&#xff0c;此时按住内容迅速滑动至左边&#xff0c;或者滑动到右边&#xff0c;回弹效果过大 期望&#xff1a;滑动时&#xff0c;不要有那么大的回弹效果 二、目前效果 三、解决方法 3.1…

怎么把pdf文件转cad图纸?方法分享!

怎么把pdf文件转cad图纸&#xff1f;在数字化时代&#xff0c;PDF和CAD作为两种常见的文件格式&#xff0c;各自在各自的领域发挥着重要作用。然而&#xff0c;当需要在两者之间进行转换时&#xff0c;许多人可能会感到困惑和无从下手。今天&#xff0c;我将为大家推荐三款强大…

Java-拼接字符串数组(String.join()方法)

问题引入 刷算法题lc2288的时候遇见的一个小细节&#xff0c;记录一下&#xff0c;有兴趣的朋友可以做一下&#xff0c;练习一下哈哈~ 此题需要使用大家都比较熟悉的split方法将句子按照空格拆分为字符串数组。 然后再在数组中对每一个字符串操作&#xff0c;操作完成后要求…

无需安装就能一键部署Stable Diffusion 3?

一键部署使用SD3&#xff1f;让你的创作更加便捷&#xff01; 前言 厚德云上架SD3! 距离Stable Diffusion 3的上线已经有一阵时间了。从上线至今SD3也是一直好评不断&#xff0c;各项性能的提升也让它荣获“最强开源新模型”的称号。成为了AI绘画设计师们新的香馍馍。 可对于SD…

JS小游戏-像素鸟#源码#Javascript

1、游戏图片 2、HTML部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>&…

操作系统:高效、稳定的承上启下

标题&#xff1a;操作系统&#xff1a;高效、稳定的承上启下 水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一、初识操作系统 第一个操作系统&#xff1a;Uinx Uinx的商业化 Linux&#xff1a;横空出世 二、如何在Windows上使用Linux 正文开始&#xff1a;…

2023年JCR影响因子正式发布,点击查看能源与燃料领域期刊变化【持续更新02】

2024年6月20日&#xff0c;科睿唯安发布了2024年度《期刊引证报告》(Journal Citation Reports&#xff0c;JCR)&#xff0c;报告覆盖全面的高质量期刊资源&#xff0c;提供了丰富的数据、指标和分析。今年JCR的最大变化为&#xff1a;把属于不同数据库&#xff0c;但属于同一学…

移动端的HSR技术

overdraw问题&#xff1a; overdraw顾名思义就是过度绘制&#xff0c;就是在渲染过程中**绘制一帧FBO&#xff08;或者RenderTarget&#xff09;**超过一次相同像素的现象!这个是CG的问题&#xff01;特别在是用来大量的透明混合的情况下会产生的&#xff0c;当然客户端andrio…