証明書を使用してリモート Docker サーバーに接続する方法

証明書を使用してリモート Docker サーバーに接続する方法

Docker サーバーへのリモート接続を開始する前に、リモート サーバーに Docker がインストールされており、サーバー上で Docker が正常に実行されていることを確認する必要があります。次に、IDEA 証明書を使用して Docker にリモート接続する手順を完了します。

1. スクリプトを使用してDockerのTLSを暗号化する

以下のスクリプトは「Docker リモート API ワンクリック TLS 暗号化」から引用したものです。次に、このスクリプトを使用して、暗号化された証明書ファイルの生成を完了します。

/root ディレクトリに暗号化スクリプトを作成します: vi create_verify.sh。

スクリプトの「xxxx」セクションに、サーバーのパブリック IP アドレスを入力することに注意してください。

#!/bin/bash
mkdir -p /root/tls/pem
#DOMAIN_HOST=`ifconfig eth0 | grep "inet" | awk '{ print $2}' | sed -n '1p;1q'`
DOMAIN_HOST=`ホスト名`
ホスト=$DOMAIN_HOST
# カスタム情報 PASSWORD="HeDongHudj"
国=CN
州=gd
都市=gz
組織=dounine
グループ=dg
名前=湖
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$HOST"
# カスタム情報#================================================================================================================================
#このフォームは、自分自身に証明書を発行するためのものです。あなたが CA 組織である場合、または第三者組織に証明書を発行してもらうこともできます。 openssl genrsa -passout pass:$PASSWORD -aes256 -out /root/tls/pem/ca-key.pem 4096
# 2. ルート証明書のRSA秘密鍵を使用して自己署名ルート証明書(ビジネスライセンス)を生成する
openssl req -new -x509 -days 365 -passin pass:$PASSWORD -key /root/tls/pem/ca-key.pem -sha256 -subj $SUBJ -out /root/tls/pem/ca.pem
#============================================================================================
#サーバーに証明書を発行する# 1. サーバーは独自の秘密鍵を生成します openssl genrsa -out /root/tls/pem/server-key.pem 4096
# 2. サーバーは証明書を生成します(公開鍵とサーバー情報が含まれます)
openssl req -new -sha256 -key /root/tls/pem/server-key.pem -out /root/tls/pem/server.csr -subj "/CN=$DOMAIN_HOST"
# 3. どうやって接続するのですか? 複数の IP アドレスを設定し、カンマで区切ることができます。 echo subjectAltName=IP:xxxx,IP:0.0.0.0 > /tmp/extfile.cnf
# 4. 認証局は証明書にスタンプを押して有効にします openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in /root/tls/pem/server.csr -CA /root/tls/pem/ca.pem -CAkey /root/tls/pem/ca-key.pem -CAcreateserial -out /root/tls/pem/server-cert.pem -extfile /tmp/extfile.cnf
#============================================================================================
#クライアントに証明書を発行する openssl genrsa -out /root/tls/pem/client-key.pem 4096
openssl req -subj '/CN=client' -new -key /root/tls/pem/client-key.pem -out /root/tls/pem/client.csr
echo 拡張キー使用法 = clientAuth > /tmp/extfile.cnf
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in /root/tls/pem/client.csr -CA /root/tls/pem/ca.pem -CAkey /root/tls/pem/ca-key.pem -CAcreateserial -out /root/tls/pem/client-cert.pem -extfile /tmp/extfile.cnf
#============================================================================================
# ファイルをクリーンアップします rm -rf /root/tls/pem/ca-key.pem
rm -rf /root/tls/pem/{サーバー、クライアント}.csr
rm -rf /root/tls/pem/ca.srl
# 最終ファイル# ca.pem == CA 証明書# client-cert.pem == クライアント証明書# client-key.pem == クライアント秘密鍵# server-cert.pem == サーバー証明書# server-key.pem == サーバー秘密鍵

スクリプトが作成されたら、次のスクリプトを実行します: sh create_verify.sh

シェル スクリプトを実行すると、ca.pem、client-cert.pem、client-key.pem、server-cert.pem、server-key.pem 証明書ファイルが /root/tls/pem ディレクトリに生成されます。

次に、ca.pem、client-cert.pem、client-key.pem の 3 つのファイルを任意のローカル ディレクトリにコピーし、client-cert.pem と client-key.pem の名前をそれぞれ cert.pem と key.pem に変更します。このディレクトリは後で使用することに注意してください。

2. Dockerの設定を変更してリモートアクセスを有効にする

$ vi /usr/lib/systemd/system/docker.service

ExecStart で始まる対応する行を見つけて、次の内容に変更し、先ほどの証明書情報を導入し、接続にポート 2376 を使用します。サーバーが Alibaba Cloud または Tencent Cloud の場合、このポートはファイアウォールで開く必要があります。

Dockerを再起動します。

$ systemctlデーモンリロード
$ systemctl dockerを再起動します

3. アイデアを使って接続をテストする

idea に docker プラグインをインストールします。この手順はここでは繰り返しません。次に、図に示すように関連情報を入力します。証明書情報は、サーバーからコピーした 3 つのファイルです。保存したディレクトリを選択します。以下のプロンプトが表示されたら、接続が成功したことを意味します。

リモートで Docker サーバーに正常に接続したら、独自のプロジェクトをミラー化し、サーバー k8s にデプロイできます。

リモート Docker サーバー証明書接続の実装方法についてはこれで終わりです。関連する Docker リモート接続証明書コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker は 2003 年の問題を解決するために MySQL リモート接続を導入しました
  • Docker で MySQL をインストールし、リモート接続を実装するチュートリアル
  • IDEA で Spring Boot プロジェクトをデプロイするためにリモート サーバー Docker に接続する方法の詳細なチュートリアル
  • portainer を使用してリモート docker に接続するチュートリアル
  • Docker はリモート接続のサンプルコードを実現するために MySQL をデプロイします
  • dockerデーモンのリモート接続設定の詳しい説明

<<:  CSSにおけるマージン値と垂直マージンの重なりについて

>>:  XMLとCSSスタイルの組み合わせ

推薦する

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

Dockerはコンテナにポートを動的に公開します

コンテナのIPアドレスを表示するdocker examine <コンテナ名またはID> ...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

Windows 2008 Server サブドメインを親ドメインに追加すると、ドメインが既に存在するというエラー メッセージが表示されます。

Windows 2008 Serverのサブドメインを親ドメインに参加させると、「ドメインは既に存...

MySQL の concat 関数についての簡単な説明。MySQL でフィールドの前または後に文字列を追加する方法

MySQL で concat 関数を使用する方法: CONCAT(文字列1、文字列2、…)戻り値は、...

一般的な Dockerfile コマンドの使用方法の紹介

目次01 CM 02 エントリーポイント03 ワークディレクトリ04 環境05 ユーザー06巻07 ...

MySql ビュー トリガー ストアド プロシージャの詳細な説明

ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...

MySQL にテキストと画像を保存する方法

Oracle の大きなテキスト データ型 Clob 長いテキスト型 (MySQL ではサポートされて...

基本構造、ドキュメント タイプ、ヘッダー、本文などの一般的な HTML 要素の概要。

1. 基本構造:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBL...

大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...

LinuxテキストエディタVimの詳しい説明

Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...

コンテンツ領域の周囲を回転する CSS 動的グラデーション ボーダーの効果 (サンプル コード)

レンダリング ネットで関連情報を調べたところ、現在のダイナミックグラデーションボーダーの実装方法のほ...

Springboot プロジェクトの Docker-compose イメージリリースプロセス分析

導入Docker-Compose プロジェクトは、Docker コンテナ クラスターの迅速なオーケス...