Docker プライベート ウェアハウスを構築する (自己署名方式)

Docker プライベート ウェアハウスを構築する (自己署名方式)

作成したイメージを一元管理し、サービスの展開を容易にするために、プライベート Docker リポジトリを作成します。公式ドキュメントを読んでみると、Docker では TLS を安全に使用するために CA 認証が必要であることがわかりました。認証に時間がかかるとコストがかかり、無料の有効期限は短すぎます。自己署名を使用する方がまだ簡単です。

環境を整える

環境: Centos 7 仮想マシン 2 台

サーバー IP: 10.57.220.244、Docker リポジトリとして使用

》クライアント IP: 10.57.220.220、イメージのアップロードやプルを行うクライアントとして使用されます

》ドメイン名: lpxxn.com

両方のマシンにDockerバージョン17.03.0-ceがインストールされています

私のように実際のドメイン名を使用しない場合は、クライアント マシン上の hosts ファイルを変更するだけで済みます。

自己署名証明書を生成する

サーバーホスト上で自己署名証明書を生成し、証明書を保存するフォルダを作成します。

mkdir -p 証明書

証明書を生成する

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/lpxxn.com.key -x509 -days 365 -out certs/lpxxn.com.crt

共通名を入力する際は、ドメイン名と同じにする必要があることに注意してください。

ll certsフォルダには、生成された2つのファイルが表示されます

リポジトリイメージを実行します。ローカルに対応するイメージがない場合は、Docker サーバーからダウンロードして起動します。docker ps コマンドを使用して、すでに実行中のウィンドウがあるかどうかを確認できます。

次のようにコードをコピーします
docker run -d -p 5000:5000 --restart=always --name registry_https -v `pwd`/certs:/home/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/home/certs/lpxxn.com.crt -e REGISTRY_HTTP_TLS_KEY=/home/certs/lpxxn.com.key registry:2

アップロードしたDockerイメージを保存するローカルディレクトリを指定することもできます。

次のようにコードをコピーします
docker run -d -p 5000:5000 -v `pwd`/dockerregister:/var/lib/registry --restart=always --name registry_https -v `pwd`/certs:/home/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/home/certs/lpxxn.com.crt -e REGISTRY_HTTP_TLS_KEY=/home/certs/lpxxn.com.key registry:2

この時点でサーバーが起動します。最後のステップは、生成された lpxxn.com.crt をクライアントにコピーすることです。独自の方法でコピーできます。私は scp を使用して、最初に /home/test ディレクトリにコピーし、次に /etc/pki/ca-trust/source/anchors ディレクトリにコピーします。

scp -r lpxxn.com.crt li@10.57.220.220:/home/test

クライアントの設定

サーバー上で生成された lpxxn.com.crt をクライアント サーバーの /etc/pki/ca-trust/source/anchors ディレクトリにコピーしてチェックアウトします。

証明書を更新し、Docker を再起動します。

アップデート CA 信頼
サービス docker 停止 && サービス docker 開始

わかりました。curlを使用して倉庫を確認します

カール https://lpxxn.com:5000/v2/_catalog 

正常にアクセスできます。 dockerコマンドでアップロードとダウンロードを試してみましょう

docker タグを使用して、ローカル イメージ centos:6 を lpxxn.com:5000/centos6:1.0 としてマークします。

倉庫にプッシュ

プッシュコマンドを実行する

docker push lpxxn.com:5000/centos6:1.0 

倉庫情報を見る

curlを使用してリポジトリ内のイメージとバージョンを表示します

カール https://lpxxn.com:5000/v2/_catalog
カール https://lpxxn.com:5000/v2/centos6/tags/list 

リポジトリからイメージを取得する

まずローカルイメージを削除します

docker rmi lpxxn.com:5000/centos6:1.0
docker rmi centos:6

引っ張って走る

docker pull lpxxn.com:5000/centos6:1.0 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • dockerプライベート倉庫の構築と利用の詳細説明
  • Dockerプライベートリポジトリをゼロから構築する手順
  • Docker はプライベート ウェアハウス (レジストリ、ハーバー) を構築します
  • プライベートウェアハウスを構築するためのUbuntu Docker Registryの詳しい説明
  • Dockerプライベートウェアハウスレジストリの構築と検証の詳細説明
  • Dockerプライベートウェアハウスを構築する最も簡単な方法の詳細な説明
  • Docker でローカルプライベートウェアハウスを構築するための詳細な手順
  • Docker Registry プライベート ウェアハウスを構築するための詳細な手順

<<:  Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

>>:  JavaScriptは、マウスが通過したときにドロップダウンボックスを表示するように実装します。

推薦する

Vueは小さな検索機能を実装する

この記事の例では、検索機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的な...

JavaScript のデシェイクとスロットリングの例

目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...

1 分で Nginx のバージョンをスムーズにアップグレードおよびロールバックする方法

今日は、企業の実際の本番環境でよく遭遇する、Nginx を新しいバージョンにアップグレードし、古いバ...

ハイパーリンクの幅と高さを直接設定できない問題の解決策

幅と高さを直接使用することはできません。 display:block; または display:in...

Zookeeper&Kafka クラスターを構築するための Docker の実装

最近Kafka勉強しています。クラスタの状態をテストする準備をしていたときに、仮想マシンを 3 つ開...

フレームウィンドウ間の関連付けとハイパーリンクのターゲット属性の使用を実装する方法

フレーム ウィンドウの関連付けを実現するには、次に示すように、ハイパーリンクの「ターゲット」ウィンド...

ウェブページエクスペリエンス: 計画と設計

1. デザインの方向性を明確にする<br />まず、どのユーザーを対象にデザインするのか...

OpenSSL を使用した Kubernetes 証明書の生成の概要

Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

MySQLのlike演算子の詳細

1. はじめに不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用でき...

ウェブサイトのユーザビリティを向上させる10のヒント

企業の Web サイト、個人のブログ、ショッピング Web サイト、ゲーム Web サイトなど、どの...

CSS を使用して複数列の等高レイアウトを設定する方法の例

最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...

MySQL で制限を使用するとパフォーマンスに影響するのはなぜですか?

まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...

Docker初心者が初めてよく使うコマンドを試してみる練習記録

Docker を正式に使用する前に、まず Docker でよく使用されるコマンドに慣れておきましょう...

HTML で JavaScript の全選択/全選択解除操作を実行するサンプル コード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...