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 [email protected]:/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は、マウスが通過したときにドロップダウンボックスを表示するように実装します。

推薦する

ウェブデザイナーもウェブコーディングを学ぶ必要がある

多くの場合、Web デザインが完成した後でデザイナーの無知が露呈し、批判されることがあります。彼らは...

MySQLインストール後のデフォルトデータベースの役割の詳細な説明

MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...

VMware 仮想マシンでの CentOS7 ネットワーク構成 (ホストのワイヤレス インターネット アクセス)

CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...

ネイティブJSで禁止すべきメソッドの記述

目次ブロックレベル関数オブジェクトのプロトタイプを直接変更すると呼び出された人発信者評価ブロックレベ...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

Webサービスのリモートデバッグとタイムアウト動作原理の分析

Webサービスのリモートデバッグ.NET では、WEBSERVICE のリモート デバッグ機能はデフ...

MySQL の全体的なアーキテクチャの紹介

MySQL の全体的なアーキテクチャは、サーバー層とストレージ エンジン層に分かれています。サーバー...

MySQL 中断された接続警告ログの分析

序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...

CSSとJSでロマンチックな流星群アニメーションを実現

1. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

Linux で Apache を使用してファイル サーバーを構築する手順

1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...

MySQL8.0.18 複数マスターと 1 スレーブの構成

目次1. 現実的な背景2. 合意3. マスターを構成する3.1. 起動パラメータの設定3.2. パラ...

言及すべき8つのMySQLの落とし穴を共有する

MySQL はインストールが簡単で、高速で、豊富な機能を備えています。これはオープンソース運動のベン...

フレックスとポジションの互換性の詳細な説明マイニングノート

今日は、すべてのブラウザ (主に IE 9 以上と Chrome) と互換性のある自分のホームページ...

Javascript 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...