docker プライベートリポジトリの構築には、次の方法があります:
- 1、docker hub 公式のプライベートイメージリポジトリ
- 2、ローカルのプライベートリポジトリ
公式のプライベートイメージリポジトリの構築は非常に簡単です(魔法が必要ですが、そうでなければ次の方法に進んでください)。ログイン、プル、タグ付け、プッシュのいくつかのコマンドが必要です。一方、ローカルのプライベートイメージリポジトリは少し複雑で、ローカルにのみ保存され、公開されません。
それでは、私たち自身のプライベートリポジトリを構築する方法を簡単に紹介しましょう!
公式イメージリポジトリ#
まず、docker hub でアカウントを登録してログインする必要があります。また、Docker Desktop でログインする必要もあります。ログインが完了したら、まずコマンドラインでログインコマンドを使用します。
docker login
Login Succeeded と表示されれば、ログインに成功です!
注:認証トークンは、ローカルディレクトリの .dockercfg ファイルに保存されます。
次に、ローカルのイメージを確認し、ここに nginx
があることがわかります。テストに使用します!
docker images
まず、イメージに tag
を付けます。つまり、名前を変更します。
注:名前の変更形式は ユーザー名 / イメージ名:バージョン番号 です。
docker tag nginx codegetters/nginx:1.0.0
tag
が正常に付けられたかどうかを確認します。
ここまでで、ほとんどの作業が完了しました。自分のアカウントに push
するだけです。
注:
push
のイメージ名は、バージョン番号を含めて完全に書く必要があります。そうでない場合、失敗します。
docker push codegetters/nginx:1.0.0
完了したら、ローカルのイメージを削除することもできますが、削除は重要ではないため、詳細は表示しません。次に、docker hub に移動し、自分のアカウントにログインします。 Repositories をクリックすると、nginx
がリポジトリに表示されます。
ここで完了です。自分のリポジトリからプルする場合は、次のコマンドを実行します。
docker pull codegetters/nginx:1.0.0
ローカルプライベートリポジトリ#
なぜプライベートリポジトリを使用するのですか?
会社のプロジェクトは通常、Docker Hub などの公共リポジトリにアップロードすることは許可されていません。そのため、プライベートリポジトリを作成することは非常に重要です。Docker Hub にはイメージを保存できますが、ネットワーク速度が遅く、内部環境でのみ使用できるローカルのプライベートリポジトリを作成することがより良い解決策です。
公式の docker hub は、公開的な集中リポジトリとして使用できます。ただし、Docker Hub へのローカルアクセスは通常非常に遅く、内部ネットワークでのみ使用できるローカルのプライベートリポジトリが必要な場合があります。
registry は、Docker イメージを管理するサービスです。次の操作では、主にこの registry イメージを使用します。
まず、registry
イメージをプルします。
docker pull registry
次に、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
正常に実行された場合、ip:5000/v2
にアクセスできるようになります。下の画像のような状態であれば、正常に実行されています。
ip:5000/v2/_catalog
にアクセスして、イメージリポジトリの状態を確認できます。空の配列は、まだイメージがアップロードされていないことを示しています。
次に、docker desktop を開き、設定を開き、自分の ip:5000
を下の配列に追加します(存在しない場合は追加する必要があります)。これにより、ローカルでイメージをプッシュすることができるようになります。Linux の場合は、/etc/docker/daemon.json
を見つける必要があります(存在しない場合は作成する必要があります)。
"insecure-registries": [
"http://xxx.xxx.xxx.xxx:5000"
],
設定が完了したら、上記の手順に従って操作を行うことができます。まず、イメージに tag
を付け、それを確認します。
注:名前の変更形式は ユーザー名 / イメージ名:バージョン番号 です。
docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0
docker images
tag
が完了したら、イメージをローカルリポジトリにプッシュします。
注:
push
のイメージ名は、バージョン番号を含めて完全に書く必要があります。そうでない場合、失敗します。
docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0
これで、先ほどのページにアクセスすると、プッシュしたイメージである nginx
が表示されます。
もちろん、次のコマンドを使用して、ローカルリポジトリの tag
リストにアクセスすることもできます。
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog
また、次のコマンドを使用して、ローカルリポジトリの tag
リストにアクセスすることもできます。
curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool
次に、registry
のイメージを実行して、正常に実行できるかどうかを確認します。ここでは、ローカルの 80
ポートを nginx の 80
ポートにマッピングしています。
docker run -d -p 80:80 --name nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0
ローカルの ip:80
にアクセスすると、nginx のページが表示され、構築が成功したことがわかります!
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 に関連する内容のみをコメントアウトし、他の内容は変更しないでください。
次に、コマンドラインを開き、このディレクトリに移動し、ローカルイメージを docker でロードします。
docker load -i harbor.v2.10.1.tar.gz
ロードが完了したら、正常に Harbor ローカルイメージがロードされたことを確認します。
./prepare
を実行して、いくつかのファイルを事前処理し、初期化します。
次に、install.sh
を実行して、正式にインストールを開始します。