[Donationsの書き込み]の一部として寄付を受け取りましたプログラム。Registryは、Dockerコンテナイメージの保存と配信を管理するアプリケーションです。レジストリは、コンテナイメージを集中化し、開発者のビルド時間を短縮します。Dockerイメージは、仮想化により同じランタイム環境を保証しますが、イメージの構築には多大な時間投資が必要になる場合があります。依存関係とパッケージを個別にインストールしてDockerを使用する代わりに、開発者は必要なすべてのコンポーネントを含むレジストリから圧縮イメージをダウンロードできます。開発者はhttps://travis-ci.com/[TravisCI]などの継続的統合ツールを使用してレジストリへのイメージのプッシュを自動化して、本番および開発中にイメージをシームレスに更新できます。これは、カスタムDockerイメージをホストできますが、イメージを公開したくない場合があります。通常、イメージにはアプリケーションの実行に必要なすべてのコードが含まれているため、専用ソフトウェアを使用する場合はプライベートレジストリを使用することをお勧めします。このチュートリアルでは、独自のプライベートDockerレジストリをセットアップして保護します。Composeを使用して、Dockerアプリケーションを実行する構成を定義し、Nginxを使用してHTTPSから実行中のDockerコンテナーにサーバートラフィックを転送します。このチュートリアルを完了すると、カスタムDockerイメージをプライベートレジストリにプッシュし、リモートサーバーからイメージを安全にプルできるようになります。前提条件このガイドを始める前に、次のものが必要です。rootユーザーとファイアウォール。1つのサーバーがプライベートDockerレジストリをホストし、もう1つのサーバーが*クライアント*サーバーになります。18.04]チュートリアル。Composeをインストールするには、このチュートリアルの最初のステップを完了するだけです。このチュートリアルでは、前提条件の一部としてDockerをインストールする方法について説明します。18.04にNginxをインストールする方法]に従ってプライベートDockerレジストリサーバーにインストールされます。[暗号化してNginxを保護する方法]。手順4ですべてのトラフィックをHTTPからHTTPSにリダイレクトするようにしてください。プライベートDockerレジストリに使用しているサーバーに解決されるドメイン名。Encryptの前提条件の一部として設定します。手順1-Dockerレジストリのインストールと構成Dockerコマンドラインツールは、1つまたは2つのDockerコンテナーの起動と管理に役立ちますが、完全な展開には、Dockerコンテナー内で実行されるほとんどのアプリケーションが他のコンポーネントを並列に実行する必要があります。多くのWebアプリケーションは、アプリケーションのコードを提供するNginxなどのWebサーバー、PHPなどの解釈されたスクリプト言語、MySQLなどのデータベースサーバーで構成されています。`ファイルを記述して、各コンテナの設定と、コンテナが相互に通信するために必要な情報を設定できます。+`コマンドラインツールを使用して、アプリケーションを構成するすべてのコンポーネントにコマンドを発行できます。Composeを使用します。+`ファイルを設定して、レジストリがデータを保存する場所を定義します。+`サブフォルダーを作成できます。docker-compose.yml次のコンテンツをファイルに追加します。これは、Dockerレジストリの基本構成を説明しています。Registryコンテナの環境変数を設定します。+`フォルダーに保存し始めます。`にマップし始めます。」セクションは、サーバーのポート「+5000」を実行中のコンテナのポート「5000」にマッピングするようにDockerに指示します。これにより、サーバー上のポート「5000」にリクエストを送信し、レジストリアプリケーションにリクエストを転送できます。Composeを起動してセットアップを確認できます。Registryイメージをダウンロードしていることが示されます。1〜2分以内に、次のような出力が表示されます(バージョンは異なる場合があります)。HTTP秘密が提供されていません+」という警告メッセージに対処します。出力は、コンテナが起動していることを示しています。出力の最後の行は、ポート「5000」でのリスニングが正常に開始されたことを示しています。Registryコンテナーをシャットダウンします。+`でリッスンする完全なDockerレジストリを設定しました。この時点では、手動で起動しない限り、レジストリは起動しません。Registryには認証メカニズムが組み込まれていないため、現在は安全ではなく、完全に公開されています。次の手順では、これらのセキュリティ上の懸念に対処します。ステップ2-Nginxポート転送のセットアップNginxを使用してDockerレジストリサーバーにHTTPSが既に設定されているため、Nginxからポート「5000」へのポート転送を設定できるようになりました。このステップを完了すると、レジストリに直接アクセスできます。+`ファイルをすでに設定している。このファイルをテキストエディターで開きます。これは次のようになります。...}...レジストリを実行するポート「5000」にトラフィックを転送する必要があります。レジストリへのリクエストにヘッダーを追加し、リクエストとレスポンスごとにサーバーから追加情報を提供します。+`セクションのコンテンツを削除し、そのセクションに次のコンテンツを追加します。`アプリケーションではないことを確認します。レジストリのバージョン「+2.0」を使用しているため、古いクライアントはサポートされていません。+`ヘッダー設定を見つけることができます。ファイルを保存して終了します。Nginxを再起動して変更を適用します。restartレジストリを実行することで、Nginxがポート「5000」にトラフィックを転送していることを確認できます。upブラウザウィンドウで、次のURLを開きます。https:///v2空のJSONオブジェクトが表示されます。:{}端末には、次のような出力が表示されます。」リクエストが行われたことがわかります。`のレスポンスを返しました。出力の最後の行にあるコード「+200」は、コンテナがリクエストを正常に処理したことを意味します。ポート転送を設定したので、レジストリのセキュリティの改善に進むことができます。ステップ3-認証のセットアップNginxがリクエストを適切にプロキシすると、HTTP認証を使用してレジストリを保護し、Dockerレジストリにアクセスできるユーザーを管理できるようになりました。+`で認証ファイルを作成し、それにユーザーを追加します。HTTP認証は、HTTPS接続を介して迅速にセットアップおよびセキュリティ保護されます。これは、レジストリが使用するものです。+`パッケージをインストールできます。apache2-utils次に、認証資格情報を保存するディレクトリを作成し、そのディレクトリに移動します。$_次に、最初のユーザーを次のように作成し、「+」を使用するユーザー名に置き換えます。+`暗号化を指定します。これはデフォルトの暗号化よりも安全です。プロンプトが表示されたらパスワードを入力します。+`ファイルを編集して、作成したファイルを使用してユーザーを認証するようにDockerに指示します。+`ディレクトリの環境変数とボリュームを追加できます。次の強調表示されたコンテンツをファイルに追加します。`を認証ファイルのパスに設定しました。+」レルムの名前を示します。レジストリを実行し、ユーザー名とパスワードの入力を求めるプロンプトを確認することで、認証が正しく機能することを確認できるようになりました。+」が再び表示されます。基本認証のセットアップを確認しました。正しいユーザー名とパスワードを入力した後にのみレジストリが結果を返しました。これでレジストリが保護され、レジストリの使用を継続できます。Registryの開始システムが起動するたびにレジストリが起動するようにします。予期しないシステムクラッシュが発生した場合は、サーバーの再起動時にレジストリが確実に再起動するようにします。registry:+`の下に次のコンテンツ行を追加します。registry:...レジストリをバックグラウンドプロセスとして起動できます。+`セッションを終了してプロセスを永続化できます。-dレジストリをバックグラウンドで実行すると、ファイルのアップロードのためにNginxを準備できるようになりました。画像をレジストリにプッシュする前に、レジストリが大きなファイルのアップロードを処理できることを確認する必要があります。」を超える場合があります。+」に設定する必要があります。+`セクションを見つけて、次の行を追加します。...}...最後に、Nginxを再起動して構成の変更を適用します。restartNginxエラーなしで大きな画像をDockerレジストリにアップロードできるようになりました。ステップ6-プライベートDockerレジストリへの公開これで、プライベートDockerレジストリにイメージを公開する準備ができましたが、最初にイメージを作成する必要があります。ubuntu`画像に基づいてシンプルな画像を作成します。Hubはパブリックにホストされるレジストリであり、アプリケーションをすばやくDockerizeするために活用できる多くの事前構成されたイメージを備えています。+`イメージを使用して、レジストリへのプッシュとプルをテストします。*クライアント*サーバーから、小さな空のイメージを作成して新しいレジストリにプッシュします。`フラグを使用すると、コンテナーへのインタラクティブなシェルアクセスが可能になります。/bin/bashダウンロードが完了すると、Dockerプロンプトが表示されます。`に続くコンテナIDは異なることに注意してください。+`という名前のファイルを作成して、ファイルシステムをすばやく変更します。次のステップでは、このファイルを使用して公開プロセスが成功したかどうかを判断できます。/SUCCESSDockerコンテナーを終了します。`という新しいイメージを作成します。+`ファイルの追加は新しいイメージに含まれています。変更をコミットします。test-imageこの時点で、画像はローカルにのみ存在します。これで、作成した新しいレジストリにプッシュできます。Dockerレジストリにログインします。`++`と対応するパスワードを入力します。次に、プッシュするために画像にプライベートレジストリの場所をタグ付けします。/test-image新しくタグ付けされた画像をレジストリにプッシュします。/test-image出力は次のようになります。Pushed...レジストリがユーザー認証を処理し、認証されたユーザーが画像をレジストリにプッシュできることを確認しました。次に、レジストリから画像をプルできることを確認します。ステップ7-プライベートDockerレジストリからのプルレジストリサーバーに戻り、*クライアント*サーバーからイメージをプルするテストを行えるようにします。これを3番目のサーバーからテストすることもできます。前に設定したユーザー名とパスワードでログインします。https://これで、画像をプルする準備ができました。前の手順でタグ付けしたドメイン名とイメージ名を使用します。/test-imageDockerはイメージをダウンロードし、プロンプトに戻ります。/bin/bashbashシェル内のファイルをリストします。+`ファイルが表示されます。varユーザーがカスタム画像をプッシュおよびプルできる安全なレジストリの設定が完了しました。結論このチュートリアルでは、独自のプライベートDockerレジストリを設定し、Dockerイメージを公開しました。[TravisCI]または同様のCIツールを使用して、プライベートレジストリへの直接プッシュを自動化することもできます。Dockerとレジストリをワークフローに活用することにより、コードを含むイメージが、実稼働中または開発中のどのマシンでも同じ動作になることを保証できます。Dockerファイルの作成の詳細については、プロセスを説明するhttps://docs.docker.com/develop/develop-images/dockerfile_best-practices/[Dockerチュートリアル]をご覧ください。