通過ca證書的方式設置允許遠程訪問Docker服務


設置允許遠程訪問Docker服務

使用場景

環境

系統:anolis7.9

修改Docker服務配置,配置安全證書

生成ca證書到/etc/docker目錄中,后續會要用到

#該步驟需要設置密碼,后面步驟會要用到,此處設置密碼為123456
openssl genrsa -aes256 -passout "pass:123456" -out /etc/docker/ca-key.pem 4096
#該步驟需要用到ca-key.pem生成時設置的密碼,并錄入國家、省、市、組織名稱、單位名稱等信息
openssl req -new -x509 -days 365 -key /etc/docker/ca-key.pem -sha256 -out /etc/docker/ca.pem -passin "pass:123456"  -subj "/C=cn/ST=STATE/L=CITY/O=ORGANIZATION/OU=ORGANIZATIONAL_UNIT/CN=COMMON_NAME/emailAddress=EMAIL@123.com"openssl genrsa -out /etc/docker/server-key.pem 4096
openssl req -subj "/CN=Docker服務器ip或者域名" -sha256 -new -key /etc/docker/server-key.pem -out /etc/docker/server.csr
echo "subjectAltName = IP:服務器ip,IP:127.0.0.1" >> extfile.cnf
echo "extendedKeyUsage = serverAuth" >> extfile.cnf
#該步驟需要用到ca-key.pem生成時設置的密碼
openssl x509 -req -days 365 -sha256 -in /etc/docker/server.csr -passin "pass:123456" -CA /etc/docker/ca.pem -CAkey /etc/docker/ca-key.pem -CAcreateserial -out /etc/docker/server-cert.pem -extfile extfile.cnf
#刪除extfile.cnf
rm -f extfile.cnf
# 創建客戶端私鑰
openssl genrsa -out key.pem 4096
# 創建客戶端簽名請求證書文件
openssl req -subj '/CN=client' -sha256 -new -key /etc/docker/key.pem -out /etc/docker/client.csr
echo extendedKeyUsage = clientAuth >> extfile.cnf
# 創建簽名生效的客戶端證書文件
openssl x509 -req -days 365 -sha256 -in /etc/docker/client.csr -passin "pass:123456" -CA /etc/docker/ca.pem -CAkey /etc/docker/ca-key.pem -CAcreateserial -out /etc/docker/cert.pem -extfile extfile.cnf
#刪除extfile.cnf
rm -f extfile.cnf
#文件賦權【非必要操作,可以視情況執行】
chmod -v 0400 "ca-key.pem" "key.pem" "server-key.pem"
chmod -v 0444 "ca.pem" "server-cert.pem" "cert.pem"

修改Docker系統文件

vim /lib/systemd/system/docker.service

修改配置,開放2375端口供客戶端訪問,并配置證書
原配置如下

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target rhel-push-plugin.service registries.service
Wants=docker-storage-setup.service
Requires=rhel-push-plugin.service registries.service
Requires=docker-cleanup.timer[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \--default-runtime=docker-runc \--authorization-plugin=rhel-push-plugin \--exec-opt native.cgroupdriver=systemd \--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \--init-path=/usr/libexec/docker/docker-init-current \--seccomp-profile=/etc/docker/seccomp.json \$OPTIONS \$DOCKER_STORAGE_OPTIONS \$DOCKER_NETWORK_OPTIONS \$ADD_REGISTRY \$BLOCK_REGISTRY \$INSECURE_REGISTRY \$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process[Install]
WantedBy=multi-user.target

修改后如下

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target rhel-push-plugin.service registries.service
Wants=docker-storage-setup.service
Requires=rhel-push-plugin.service registries.service
Requires=docker-cleanup.timer[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \--tlsverify \--tlscacert=/etc/docker/ca.pem \--tlscert=/etc/docker/server-cert.pem \--tlskey=/etc/docker/server-key.pem \-H tcp://0.0.0.0:2375 \--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \--default-runtime=docker-runc \--authorization-plugin=rhel-push-plugin \--exec-opt native.cgroupdriver=systemd \--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \--init-path=/usr/libexec/docker/docker-init-current \--seccomp-profile=/etc/docker/seccomp.json \$OPTIONS \$DOCKER_STORAGE_OPTIONS \$DOCKER_NETWORK_OPTIONS \$ADD_REGISTRY \$BLOCK_REGISTRY \$INSECURE_REGISTRY \$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process[Install]
WantedBy=multi-user.target

然后保存文件,并重新加載Docker

systemctl daemon-reload
systemctl restart docker

此時,即可從其他服務器訪問Docker服務了。需要注意的是如果Docker服務器防火墻管控嚴格的話,可能需要額外開放一下2375端口的防火墻。

驗證

/etc/docker目錄下下載ca.pem``````cert.pem``````key.pem三個證書文件,使用curl --cert /etc/docker/cert.pem --key /etc/docker/key.pem --cacert /etc/docker/ca.pem https://ip:2375/version 命令進行驗證

然后也可以通過瀏覽器直接訪問https://docker服務器的ip:2375/version查看Docker版本,來驗證當沒有證書時是否能正常訪問Docker服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84100.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt Quick Layout功能及架構

Qt Quick Layouts 是 Qt Quick 中用于管理用戶界面布局的模塊,在 Qt 6.0 中繼續提供強大的布局管理功能。 一、主要功能 主要布局類型 RowLayout - 水平排列項目 ColumnLayout - 垂直排列項目 GridLayout - 網格排列項目 StackLayout - 堆疊項目(一…

Golang 面試經典題:map 的 key 可以是什么類型?哪些不可以?

Golang 面試經典題:map 的 key 可以是什么類型?哪些不可以? 在 Golang 的面試中,map 類型的使用是一個常見的考點,其中對 key 類型的合法性 是一道常被提及的基礎卻很容易被忽視的問題。本文將帶你深入理解 Golang 中…

從 ClickHouse、Druid、Kylin 到 Doris:網易云音樂 PB 級實時分析平臺降本增效

網易云音樂基于 Apache Doris 替換了早期架構中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎,統一了實時分析架構,并廣泛應用于廣告實時數倉、日志平臺和會員報表分析等典型場景中,帶來導入性能提升 3~30 倍&#xff…

Android 本地存儲路徑說明

一、背景 作為一個開發者,我們經常需要通過緩存一些文件到SD卡中,常見的方式就是,通過: File sdCard Environment.getExternalStorageDirectory(); 獲取SD卡根目錄,然后自定義文件/文件名進行文件存儲.這樣做法的結果就是,當手機安裝了大量的app時,SD卡根目錄會…

開發的幾種格式,TCP的十個重要機制

自定義協議中, 我們有幾種常見的數據格式: 1.xml 通過標簽來組織數據 請求: 優勢: 讓數據的可讀性變更好了 劣勢: 標簽非常繁瑣,傳輸的時候也占用更多網絡帶寬(maven會使用xml來管理項目配…

dify打造數據可視化圖表

一、概述 在日常工作和學習中,我們經常需要和數據打交道。無論是分析報告、項目展示,還是簡單的數據洞察,一個清晰直觀的圖表,往往能勝過千言萬語。 一款能讓數據可視化變得超級簡單的 MCP Server,由螞蟻集團 AntV 團隊…

自然語言處理——文本分類

文本分類 傳統機器學習方法文本表示向量空間模型 特征選擇文檔頻率互信息信息增益(IG) 分類器設計貝葉斯理論:線性判別函數 文本分類性能評估P-R曲線ROC曲線 將文本文檔或句子分類為預定義的類或類別, 有單標簽多類別文本分類和多…

任務調度器-關于中心化調度 vs 去中心化調度的核心區別

1. 定義與架構模型 維度中心化調度去中心化調度核心角色存在一個中央調度器(如XXL-JOB的調度中心),統一管理任務分配、狀態監控和故障處理。無中心節點,調度邏輯分散在多個節點,通過共識算法(如選舉機制&a…

[論文閱讀] 人工智能+軟件工程 | 結對編程中的知識轉移新圖景

當AI成為編程搭檔:結對編程中的知識轉移新圖景 論文信息 論文標題:From Developer Pairs to AI Copilots: A Comparative Study on Knowledge Transfer(從開發者結對到AI副駕駛:知識轉移的對比研究) 作者及機構&#…

CAD多面體密堆積3D插件

插件介紹 CAD多面體密堆積3D插件可在AutoCAD內建立三維隨機多面體密堆積模型。 插件內置物理動力學模擬算法,通過模擬重力、碰撞等現象,使多面體在虛擬環境中發生自然堆積,進而實現真實的堆積效果。多面體堆積模擬中存在的局部穿模問題可通…

VSCode CUDA C++進行Linux遠程開發

環境準備 確保在本地和遠程Linux服務器上安裝了以下軟件: Visual Studio Code(簡稱VS Code)Remote Development extension pack for VS CodeCUDA Toolkit,推薦版本為11.0或更高GCC編譯器,用于C代碼的編譯 此外&…

Python爬蟲(一):爬蟲偽裝

一、網站防爬機制概述 在當今互聯網環境中,具有一定規模或盈利性質的網站幾乎都實施了各種防爬措施。這些措施主要分為兩大類: 身份驗證機制:直接將未經授權的爬蟲阻擋在外反爬技術體系:通過各種技術手段增加爬蟲獲取數據的難度…

快速使用 Flutter Card 組件指南

目錄 一、引言 二、Card 的基本用法 三、主要屬性 3.1 elevation (陰影高度) 3.2 shape (形狀) 3.3 color (顏色) 3.4 margin (外邊距) 3.5 完整示例 四、結合 ListTile 組件使用 五、帶圖片的 Card 示例 六、注意事項 相關推薦 一、引言 Card 是 Flutter 提供的一個…

C語言內存管理和編譯優化實戰

參考: C語言內存管理“玄學”:從崩潰到精通的避坑指南C語言編譯優化實戰:從入門到進階的高效代碼優化技巧

【產品業務設計】支付業務設計規范細節記錄,含訂單記錄、支付業務記錄、支付流水記錄、退款業務記錄

【產品業務設計】支付業務設計規范細節記錄,含訂單記錄、支付業務記錄、支付流水記錄 前言 我為什么要寫這個篇文章 總結設計經驗生成設計模板方便后期快速搭建 一個幾張表 一共5張表; 分別是: 訂單主表:jjy_orderMain訂單產…

CppCon 2015 學習:Live Lock-Free or Deadlock

這段內容是介紹一場關于**“實用無鎖編程(Practical Lock-Free Programming)”**的講座提綱,重點在C中的并發編程。下面是詳細的中文理解和分析: 講座大綱和內容理解 主題概覽 適當的“guru崇拜”和“祈求” → 開場調侃&#…

centos7編譯安裝LNMP架構

一、LNMP概念 LNMP架構是一種常見的網站服務器架構,由Linux操作系統、Nginx Web服務器、MySQL數據庫和PHP后端腳本語言組成。 1 用戶請求:用戶通過瀏覽器輸入網址,請求發送到Nginx Web服務器。 2 Nginx處理:Nginx接收請求后&…

Spark 寫文件

Repartition Spark 輸出文件數量 假設每個 Task 的輸出數據都包含了全部 8 個分區值,那么最終的文件生成情況如下: 總文件數 = Task 數量 分區組合數 假設: ?Task 數量?:200 ?分區組合數?:8 個 (from_cluster 和 ds 的組合) 則: ?總文件數?:200 8 = ?1600 …

自定義protoc-gen-go生成Go結構體,統一字段命名與JSON標簽風格

背景 在日常的 Go 微服務開發中,Protocol Buffers(protobuf) 是廣泛使用的數據交換格式。其配套工具 protoc-gen-go 會根據 .proto 文件生成 Go 結構體代碼,但默認生成的字段名、JSON tag 命名風格往往不能滿足所有團隊或項目的代…

LabVIEW的MathScript Node 繪圖功能

該VI 借助 LabVIEW 的 MathScript Node,結合事件監聽機制,實現基于 MathScript 的繪圖功能,并支持通過交互控件自定義繪圖屬性。利用 MathScript 編寫腳本完成圖形初始化,再通過LabVIEW 事件結構響應用戶操作,動態修改…