Docker Enterprise Edition を使用して独自のプライベート レジストリ サーバーを構築する

Docker Enterprise Edition を使用して独自のプライベート レジストリ サーバーを構築する

Docker は本当に素晴らしいです。特に、仮想マシンを使用する場合に比べて、Docker イメージを移動するのが非常に簡単なので、とても便利です。 Docker を使用する準備ができている場合は、Docker Hub から完全なイメージをすでにプルしている必要があります。 Docker Hub は、何千もの Docker イメージから選択できる Docker のクラウドベースのレジストリ サーバー サービスです。独自のソフトウェア パッケージを開発し、独自の Docker イメージを作成する場合は、独自のプライベート レジストリが必要になります。独自のライセンスを持つイメージがある場合、またはビルド システムに複雑な継続的インテグレーション (CI) プロセスを提供する場合は、独自のプライベート レジストリを用意する必要があります。

Docker Enterprise Edition には Docker Trusted Registry (DTR) が含まれています。これは、独自のデータ センターまたはクラウドベースのインフラストラクチャで実行できるように構築された、安全なイメージ管理機能を備えた高可用性レジストリ サーバーです。以下では、DTR が安全で再利用可能かつ継続的なソフトウェア サプライ チェーンを提供する上で重要なコンポーネントであることを確認します。無料のホスト型デモですぐに使い始めることも、ダウンロードしてインストールし、30 日間の無料トライアルを試すこともできます。自分でインストールを開始するための手順は次のとおりです。

Docker Enterprise Editionを構成する

DTR はユニバーサル コントロール パネル (UCP) 上で実行されるため、開始する前に単一ノード クラスターをインストールする必要があります。すでに独自の UCP クラスターがある場合は、この手順をスキップできます。 Docker ホストで、次のコマンドを実行します。

# UCP をプルしてインストールする
docker run -it -rm -v /var/run/docker.sock:/var/run/docker.sock -name ucp docker/ucp:最新インストール

UCP が起動したら、DTR をインストールする前にいくつかの作業を行う必要があります。インストールした UCP インスタンスに対してブラウザを開きます。ログ出力の最後にリンクがあるはずです。すでに Docker Enterprise Edition ライセンスをお持ちの場合は、この画面で入力します。まだお持ちでない場合は、Docker Store にアクセスして 30 日間の無料トライアルを入手できます。

ライセンスの準備ができたら、UCP が実行されるポートを変更することができます。これは単一ノード クラスターであるため、DTR と UCP は同じポートで Web サービスを実行する可能性があります。複数のノードを持つ UCP クラスターがある場合、DTR は必要な空きポートを持つノードを見つけるため、これは問題になりません。 UCP で、「管理設定 -> クラスタ構成」をクリックし、コントローラ ポート (5443 など) を変更します。

DTRのインストール

シンプルな単一ノードの DTR インスタンスをインストールします。 DTR を実際の運用目的でインストールする場合は、高可用性 (HA) モードで設定する必要があります。そのためには、クラウドベースのオブジェクト ストレージや NFS (LCTT 翻訳注: ネットワーク ファイル システム) などの別のストレージ メディアが必要です。現在のインストールは単一ノード インスタンスであるため、デフォルトのローカル ストレージを引き続き使用します。

まず、DTR のブートストラップ イメージを取得する必要があります。ブーストストラップ イメージは、UCP に接続し、DTR をセットアップして起動するために必要なすべてのコンテナー、ボリューム、論理ネットワークが含まれた、小さなスタンドアロン インストーラーです。

コマンドを使用します:

# DTR ブートローダーをプルして実行します docker run -it -rm docker/dtr:latest install -ucp-insecure-tls

注: デフォルトでは、UCP と DTR には独自の証明書がありますが、これらはシステムによって認識されません。システムが信頼する TLS 証明書を使用して UCP をすでに設定している場合は、 -ucp-insecure-tlsオプションを省略できます。あるいは、 -ucp-caオプションを使用して UCP CA 証明書を直接指定することもできます。

次に、DTR ブートストラップ イメージによって、UCP インストールの URL や管理者のユーザー名とパスワードなど、いくつかの設定を確認するように求められます。すべての DTR イメージを取得してすべてをセットアップするには、わずか 1 ~ 2 分しかかかりません。

すべてを安全に保つ

すべての準備が整ったら、レジストリにイメージをプッシュしたり、レジストリからイメージをプルしたりできます。その前に、DTR と安全に通信するための TLS 証明書を設定しましょう。

Linux では、次のコマンドを使用できます (設定した DTR を正しくマップするために、DTR_HOSTNAME 変数を必ず変更してください)。

# DTR から CA 証明書を取得します (curl が利用できない場合は、wget を使用できます)
DTR_HOSTNAME=<DTRホスト名>
curl -k https://$(DTR_HOSTNAME)/ca > $(DTR_HOSTNAME).crt
sudo mkdir /etc/docker/certs.d/$(DTR_HOSTNAME)
sudo cp $(DTR_HOSTNAME) /etc/docker/certs.d/$(DTR_HOSTNAME)
# dockerデーモンを再起動します(Ubuntu 14.04では、コマンド「sudo service docker restart」を使用します)
sudo systemctl dockerを再起動します

Docker for Mac と Docker for Windows ではクライアントのインストール方法が異なります。 「設定 -> デーモン」に移動し、「安全でない登録サーバー」セクションで DTR ホスト名を入力します。 「適用」をクリックすると、再起動後に docker デーモンが使用可能になります。

画像のプッシュとプル

次に、画像を保存するためのリポジトリを設定する必要があります。これは Docker Hub とは少し異なり、docker push を実行してもリポジトリが存在しない場合は、自動的に作成されます。リポジトリを作成するには、ブラウザで https://<Your DTR hostname> を開き、プロンプトが表示されたら管理者の資格情報を使用してログインします。 UCP にライセンスを追加すると、DTR は自動的にそのライセンスを取得します。そうでない場合は、今すぐライセンスのアップロードを確認してください。

先ほどの Web ページにアクセスした後、「新しい倉庫」ボタンをクリックして新しい倉庫を作成します。

Alpine Linux を保存するためのリポジトリを作成するので、名前入力に「alpine」と入力し、「保存」(DTR 2.5 以降では「作成」と呼ばれます) をクリックします。

ここで、シェル インターフェイスに戻り、次のコマンドを入力します。

# Alpine Linux の最新バージョンをプルする docker pull alpine:latest
# 新しい DTR インスタンスにログインします docker login <DTR ホスト名>
# Alpine をタグ付けして DTR へのプッシュを有効にする
docker tag alpine:latest <DTRホスト名>/admin/alpine:latest
# イメージを DTR にプッシュします docker push <DTR ホスト名>/admin/alpine:latest

それでおしまい!最新の Alpine Linux のコピーをプッシュし、それを再タグ付けして DTR に保存し、プライベート レジストリにプッシュしました。イメージを別の Docker エンジンにプルする場合は、上記のように DTR 証明書を設定してから、次のコマンドを実行します。

# DTR からイメージをプルします docker pull <DTR ホスト名>/admin/alpine:latest

DTR には、イメージのキャッシュ、イメージング、スキャン、署名、さらには自動サプライ チェーン ポリシーなど、優れたイメージ管理機能が数多く備わっています。これらの機能については、今後のブログ投稿でさらに詳しく説明します。

要約する

以上が、Docker Enterprise Edition を使用して独自のプライベート登録サーバーを構築する方法についてご紹介したものです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Centos7はdockerを使ってgitlabサーバーを構築する
  • 1分でDockerを使ってDNSサーバーを構築する方法
  • Ubuntu サーバーに Docker をすばやくデプロイする方法
  • Docker で Apache2 サーバーをイメージ サーバーとしてインストールして実行する方法
  • Dockerコンテナをサーバー間で移行する方法
  • 3分でDockerを使ってMinecraftサーバーを構築する

<<:  js でオブジェクトを作成するさまざまな方法とその長所と短所のまとめ

>>:  MySQL グリーンバージョン設定コードと 1067 エラーの詳細

推薦する

JavaScriptはクリックするとランダムなグラフィックを生成します

この記事では、クリックするとランダムグラフィックの生成を実現するJavaScriptの具体的なコード...

mysqlにコメント情報を追加する実装

序文最近、MySQL に関するメモをいくつか尋ねる人がいたので、ブログ記事を書かなければなりません。...

Vueタイムラインコンポーネントの使い方

この記事の例では、参考までにvueタイムラインコンポーネントの具体的な実装コードを共有しています。具...

Vue が DingTalk の出勤カレンダーを実装

この記事では、DingTalkの勤怠カレンダーを実装するためのVueの具体的なコードを参考までに共有...

Linux でディスクをマウントし、起動時に自動的にマウントするように設定する方法

皆さんの時間は貴重だと承知しているので、プロセス コマンドを直接書き留めておきます。設定できます。原...

Vue3 コンポジション API でロジックの再利用を実装する方法

Composition API はロジック再利用手順を実装します。ロジックコードを関数に抽出します。...

Nginx リバース プロキシを使い始める

目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...

TypeScript ジェネリックを簡単に説明する方法

目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...

Nginxホットデプロイメントの実装

目次セマフォNginx ホットデプロイメント上記のブログ投稿に従ってください。ファイアウォールをオフ...

Tomcat は、Springboot プロジェクトの WAR パッケージの起動時にエラーを報告します: 子の起動時にエラーが発生しました

今日、会社の Springboot プロジェクトは、テストのためにテスト サーバーにデプロイする準備...

インライン要素とブロック要素とは何ですか?

1. インライン要素はコンテンツの幅のみを占めますが、ブロック要素はコンテンツの量に関係なく行全体を...

CSS3を使って歌詞進行テキストカラー塗りつぶし変更の動的効果を実装するアイデアの詳細な説明

音楽を再生すると、曲が進むにつれて歌詞が徐々に色づきます。色は単語ごとに変わるのではなく、左から右へ...

フォームのデフォルトの送信方法を変更する方法

htmlのデフォルトの送信方法は、postではなくgetです。postに変更したい場合は、 meth...

MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離

目次1.同時アクセス制御2. 取引1. トランザクションは ACID 原則に従います。 2. トラン...

MySql のサブクエリ内のクエリ例の詳細な説明

北西を見ると私の故郷はどこにあるでしょうか。南東の満月を何度見たことがあるでしょうか。月が再びゆっく...