banner
JohnsonSimon

JohnsonSimon

email
github

Docker プライベートリポジトリの構築

docker プライベートリポジトリの構築には、次の方法があります:

  • 1、docker hub 公式のプライベートイメージリポジトリ
  • 2、ローカルのプライベートリポジトリ

公式のプライベートイメージリポジトリの構築は非常に簡単です(魔法が必要ですが、そうでなければ次の方法に進んでください)。ログイン、プル、タグ付け、プッシュのいくつかのコマンドが必要です。一方、ローカルのプライベートイメージリポジトリは少し複雑で、ローカルにのみ保存され、公開されません。

それでは、私たち自身のプライベートリポジトリを構築する方法を簡単に紹介しましょう!

公式イメージリポジトリ#

まず、docker hub でアカウントを登録してログインする必要があります。また、Docker Desktop でログインする必要もあります。ログインが完了したら、まずコマンドラインでログインコマンドを使用します。

docker login

Login Succeeded と表示されれば、ログインに成功です!
image

注:認証トークンは、ローカルディレクトリの .dockercfg ファイルに保存されます。

次に、ローカルのイメージを確認し、ここに nginx があることがわかります。テストに使用します!

docker images

image

まず、イメージに tag を付けます。つまり、名前を変更します。

注:名前の変更形式は ユーザー名 / イメージ名:バージョン番号 です。

docker tag nginx codegetters/nginx:1.0.0

image

tag が正常に付けられたかどうかを確認します。

image

ここまでで、ほとんどの作業が完了しました。自分のアカウントに push するだけです。

注:push のイメージ名は、バージョン番号を含めて完全に書く必要があります。そうでない場合、失敗します。

docker push codegetters/nginx:1.0.0

image

完了したら、ローカルのイメージを削除することもできますが、削除は重要ではないため、詳細は表示しません。次に、docker hub に移動し、自分のアカウントにログインします。 Repositories をクリックすると、nginx がリポジトリに表示されます。

image

ここで完了です。自分のリポジトリからプルする場合は、次のコマンドを実行します。

docker pull codegetters/nginx:1.0.0

ローカルプライベートリポジトリ#

なぜプライベートリポジトリを使用するのですか?
会社のプロジェクトは通常、Docker Hub などの公共リポジトリにアップロードすることは許可されていません。そのため、プライベートリポジトリを作成することは非常に重要です。Docker Hub にはイメージを保存できますが、ネットワーク速度が遅く、内部環境でのみ使用できるローカルのプライベートリポジトリを作成することがより良い解決策です。

公式の docker hub は、公開的な集中リポジトリとして使用できます。ただし、Docker Hub へのローカルアクセスは通常非常に遅く、内部ネットワークでのみ使用できるローカルのプライベートリポジトリが必要な場合があります。

registry は、Docker イメージを管理するサービスです。次の操作では、主にこの registry イメージを使用します。

まず、registry イメージをプルします。

docker pull registry

image

次に、registry を実行し、イメージの /var/lib/registry をローカルの E:\software_cache\docker ディレクトリにマウントし、ローカルの 5000 ポートをイメージにマッピングします。

docker run -d -p 5000:5000 -v E:\software_cache\docker:/var/lib/registry --restart=always registry

image

正常に実行された場合、ip:5000/v2 にアクセスできるようになります。下の画像のような状態であれば、正常に実行されています。
image

ip:5000/v2/_catalog にアクセスして、イメージリポジトリの状態を確認できます。空の配列は、まだイメージがアップロードされていないことを示しています。
image

次に、docker desktop を開き、設定を開き、自分の ip:5000 を下の配列に追加します(存在しない場合は追加する必要があります)。これにより、ローカルでイメージをプッシュすることができるようになります。Linux の場合は、/etc/docker/daemon.json を見つける必要があります(存在しない場合は作成する必要があります)。

  "insecure-registries": [
    "http://xxx.xxx.xxx.xxx:5000"
  ],

image

設定が完了したら、上記の手順に従って操作を行うことができます。まず、イメージに tag を付け、それを確認します。

注:名前の変更形式は ユーザー名 / イメージ名:バージョン番号 です。

docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker images

image

tag が完了したら、イメージをローカルリポジトリにプッシュします。

注:push のイメージ名は、バージョン番号を含めて完全に書く必要があります。そうでない場合、失敗します。

docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0

image

これで、先ほどのページにアクセスすると、プッシュしたイメージである nginx が表示されます。
image

もちろん、次のコマンドを使用して、ローカルリポジトリの tag リストにアクセスすることもできます。

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog

image

また、次のコマンドを使用して、ローカルリポジトリの tag リストにアクセスすることもできます。

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool

image

次に、registry のイメージを実行して、正常に実行できるかどうかを確認します。ここでは、ローカルの 80 ポートを nginx の 80 ポートにマッピングしています。

docker run -d -p 80:80 --name nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

image

ローカルの ip:80 にアクセスすると、nginx のページが表示され、構築が成功したことがわかります!
image

Harbor を使用したリポジトリの管理#

Harbor とは何ですか?

Harbor は、vm 社がオープンソースで提供するエンタープライズレベルのコンテナイメージリポジトリで、次の機能があります:
ユーザーインターフェースの管理
ロールベースのアクセス制御
LDAP/AD 統合およびログ監査などの基本的な運用操作

Harbor の 3 つのインストール方法(ここではオフラインインストールを選択します):

  • オンラインインストール:Docker Hub から Harbor 関連のイメージをダウンロードするため、インストールパッケージは非常に小さいです
  • オフラインインストール:インストールパッケージにデプロイに関連するイメージが含まれているため、インストールパッケージは比較的大きいです
  • OVA インストーラ(サードパーティ):vCenter 環境を持っている場合は、このインストーラを使用して、OVA をデプロイしてから Harbor を起動します

準備:Harbor online インストールパッケージharbor-offline-installer-vx.x.x.tgz をダウンロードして解凍し、harbor.yml.tmpl ファイルをコピーして harbor.yml に名前を変更し、テキストエディタで開き、hostname をローカルの IP アドレスに変更します。https でアクセスしない場合(通常は内部ネットワークで使用される)、関連する設定をコメントアウトしてください。https に関連する内容のみをコメントアウトし、他の内容は変更しないでください。

image

次に、コマンドラインを開き、このディレクトリに移動し、ローカルイメージを docker でロードします。

docker load -i harbor.v2.10.1.tar.gz

image

ロードが完了したら、正常に Harbor ローカルイメージがロードされたことを確認します。
image

./prepare を実行して、いくつかのファイルを事前処理し、初期化します。

image

次に、install.sh を実行して、正式にインストールを開始します。

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。