Dockerイメージをプライベートリポジトリにアップロードする方法の例

Dockerイメージをプライベートリポジトリにアップロードする方法の例

イメージは、GitHub と同様に Docker パブリック リポジトリに直接簡単にプッシュできますが、開発中にイメージ ファイルを公開したくない場合がよくあります。この場合、GitLab と同様に Docker プライベート リポジトリを構築する必要があります。

前の記事でイメージをビルドした後、イメージを保存するためのプライベート イメージ リポジトリをデプロイできます。

プライベートレジストリを開始する

プライベートリポジトリの開始も非常に簡単です。サーバー上でコマンドを実行します。

次のようにコードをコピーします
docker run -d -p 5000:5000 --name="docker-registry" --restart=always -v /root/docker/registry/:/var/lib/registry/ レジストリ

つまり、レジストリイメージによって構築されたコンテナがバックグラウンドで起動され、 docker-registryという名前が付けられ、ポート番号が5000から5000にマッピングされます。

--restart=alwaysコンテナが何らかの理由で停止した場合、終了コードに関係なく自動的に再起動することを意味します。 alwaysに加えて、 on-failureもあります。これは、終了コードが 0 でない場合にのみ再起動することを意味し、再起動回数パラメータを受け入れます: --restart=on-failture:5

-v 、ホストの/root/docker/registry/ディレクトリがコンテナの/var/lib/registry/ディレクトリにマウントされることを指定します。この方法では、コンテナに入らずに、ホストマシン上のコンテナ内の目的のディレクトリにアクセスできます。

なぜ/var/lib/registry/のでしょうか?
デフォルトでは、リポジトリはコンテナの/var/lib/registry/dockerディレクトリにイメージやその他の情報を保存します。このディレクトリに入ると、アップロードされたイメージ情報を表示できます。

runコマンドを正常に実行した後、 docker psを使用してレジストリ サービスが開始されたことを確認します。

画像をアップロード

プライベート リポジトリにイメージをアップロードするには、イメージ タグにリポジトリ アドレスを追加する必要があります。

docker タグ express-app 111.111.111.111:5000/sunhengzhe/express-app:v1

他のイメージとの競合を避けるために、 sunhengzheなどの名前空間を追加することができます。また、イメージにv1などのタグを付けるのが最適です。

リポジトリアドレスにはプロトコル部分は含まれないことに注意してください。Docker のデフォルトのセキュリティポリシーでは、リポジトリがhttpsをサポートしている必要があります。サーバーが http 伝送しか使用できない場合、直接アップロードは失敗します。Docker クライアントの設定ファイルで宣言する必要があります。

Macの設定

変更後はApply & Restart必要があります

CentOS システム

/etc/docker/daemon.jsonファイルに次の内容を記述します。

{
 「レジストリミラー」: [
  「https://registry.docker-cn.com」
 ]、
 「安全でないレジストリ」: [
  "[プライベート倉庫 IP:ポート]"
 ]
}

次にdockerを再起動します

systemctl dockerを再起動します

プッシュ画像

tagを入力した後、 pushコマンドを使用してプッシュします。

docker push 111.111.111.111:5000/sunhengzhe/express-app:v1 

プッシュに失敗しました

Retrying in 5 secondsてもアップロードに失敗する問題が発生した場合。まず、サーバー上でlogsコマンドを使用してログを表示します。

docker ログ -f docker-registry

-fファイルの内容の連続出力を意味します。

filesystem: mkdir /var/lib/registry/docker: permission denied表示される場合は、selinux の問題である可能性があり、サーバー上のマウント ディレクトリを処理する必要があります。

chcon -Rt svirt_sandbox_file_t /root/docker/registry/

この例では、 /root/docker/registry/です。

画像をプルする

pullコマンドを使用する

docker pull 111.111.111.111:5000/sunhengzhe/express-app:v1

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Registry プライベート ウェアハウスを構築するための詳細な手順
  • Docker でローカルプライベートウェアハウスを構築するための詳細な手順
  • Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除
  • プライベートレジストリ内の画像を照会または取得する方法
  • Dockerチュートリアル: プライベートウェアハウスの詳細な説明
  • プライベート倉庫のcentos7 docker1.12インストールの詳しい説明
  • Dockerプライベートウェアハウスを構築する最も簡単な方法の詳細な説明
  • Dockerプライベート倉庫の構築と利用の詳細説明
  • CentOS 7の詳細解説:Dockerプライベートウェアハウスの構築と使い方
  • Dockerプライベートウェアハウスの構築とインターフェース管理の詳細な説明

<<:  Vue サーバーに js 構成ファイルをインポートする方法

>>:  mysql5.7.19 winx64 解凍版のインストールと設定のチュートリアル

推薦する

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

スライド効果を実現するためのネイティブJavaScript

ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...

ページ要素の絶対位置と相対位置に関するある程度の理解

今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...

HTMLのタグについての簡単な説明

0. タグとは何ですか? XML/HTML コードコンテンツをクリップボードにコピー<入力 t...

VueはTeleportをベースにModalコンポーネントを実装します

目次1. テレポートについて知る2. テレポートの基本的な使い方3. 最初のステップの最適化4. 第...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

MySQLの行数カウントに関する簡単な説明

各テーブルの行数をカウントするために使用される MySQL count() 関数は、誰もがよく知って...

MySql COALESCE 関数の使用コード例

COALESCE は、各パラメータ式 (expression_1、expression_2、...、...

MySQL で特殊文字を含むデータベース名を作成する方法の例

序文この記事では、MySQL で特殊文字を使用してデータベース名を作成する方法について説明します。こ...

JavaScript の数値および数学オブジェクトの概要

目次1. JavaScript における数値2. Javascript の Math オブジェクト1...

https ウェブサイトを展開し、Nginx でアドレス書き換えを構成するための詳細な手順

Nginx は、高性能な Web サイト サーバーおよびリバース プロキシ サーバーであり、IMAP...

Nginx を使用してグレースケール リリースを実装する

グレースケールリリースとは、白と黒をスムーズに移行できるリリース方法を指します。 ABテストとは、グ...

HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をク...