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

推薦する

MySql8.0バージョンに接続するMyBatisの設定問題について

mybatis を学習しているときにエラーが発生しました。エラーの内容は次のとおりです。データベース...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

Web スライスとは何ですか?

IE8 の新機能 Web スライス (Web スライス) Microsoft は 3 月 20 日...

Navicatを使用してクラウドサーバーデータベースにリモート接続する方法

秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...

透明な入力ボックスにアイコンを追加する HTML コード

最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...

WindowsはVMwareを使用してLinux仮想マシンを作成し、CentOS7.2オペレーティングシステムをインストールします。

目次1. ウィザードに従って仮想マシンを作成します2. オペレーティングシステムをインストールします...

CSSマスクのフルスクリーン中央揃えを実装する方法

具体的なコードは次のとおりです。 <スタイル> #トーストローダーフルスクリーン{ 高さ...

CSS3 のディスプレイのグリッドレイアウトとフレックスレイアウトの詳細な説明

Gird レイアウトは Flex レイアウトといくつかの類似点があり、どちらもコンテナーの内部項目を...

高速レイアウトのための CSS ビューポート単位

CSS ビューポート ユニットはここ数年登場しており、時が経つにつれて、ますます多くの開発者が使用し...

RGBA の「a」は何を意味するのでしょうか? CSS RGBA カラー ガイド

RGBAは色の値と透明度を設定できるCSSカラーです以下は、rgba() を使用して白色を 50% ...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

Linux での Jenkins の詳細なインストール手順

目次1. JDKをインストールする2. Jenkinsをインストールする3. Jenkinsの設定を...

Docker で MySQL を起動したときに SQL 文を自動的に実行する方法

Docker で MySQL コンテナを作成する場合、コンテナの起動後にデータベースとテーブルが自動...

MySQL でシンプルな検索エンジンを実装するためのサンプルコード

目次序文導入ngram全文パーサー全文インデックスを作成する検索方法1. 自然言語検索(自然言語モー...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...