証明書を使用してリモート 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スタイルの組み合わせ

推薦する

JavaScript のカンマ式が含まれている場合について

JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...

知っておくべきHTML最適化テクニック

Web ページのパフォーマンスを向上させるために、多くの開発者は、JavaScript、画像の最適化...

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

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

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

JavaScript における var、let、const の違いの詳細な説明

目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

文字列から指定された文字を削除または抽出する JavaScript メソッド (非常によく使用されます)

目次1. 部分文字列() 2. サブストラクチャ() 3.インデックス() 4.最後のインデックス(...

Vue でカスタムパスのエイリアスを設定する方法

Vue でカスタム パス エイリアスを設定する方法日常の開発では、モジュールやコンポーネントをインポ...

MySQL の日付型の単一行関数コードの詳細な説明

MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...

IE をフリーズさせる HTML コード

任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...

WeChatアプレットでのwxsファイルの素晴らしい使い方をいくつか紹介します

目次序文応用フィルタードラッグファイル間での参照の受け渡しwxsはjsロジック層にパラメータを渡しま...

W3C チュートリアル (15): W3C SMIL アクティビティ

SMIL は、Web にタイミングとメディアの同期のサポートを追加します。 SMIL は、Web に...

フロントエンドJavaScriptの動作原理

目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...