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 解凍版のインストールと設定のチュートリアル

推薦する

js に基づいて大きなファイルのアップロードとブレークポイントの再開を管理する方法

目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...

ウェブデザインにおけるグリッドシステム

グリッドシステムの形成1692年、新しく即位したフランス国王ルイ14世は、フランスの印刷技術のレベル...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

MySQL監視ツールmysql-monitorの詳細な説明

1. 概要mysql-monitor MYSQL 監視ツール、最適化ツール、1 つの Java Sp...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

HTML テーブル マークアップ チュートリアル (10): セル パディング属性 CELLPADDING

セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...

mysql 計算関数の詳細

目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...

Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順

目次1. CentOS 7.9 20にDockerをインストールする2. MySQL クラスターをデ...

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

iframe の src を about:blank に設定した後の詳細

iframe の src を 'about:blank' に設定した後、"...

W3C チュートリアル (5): W3C XML アクティビティ

XML は、データを記述、保存、送信、交換するために設計されています。 XML 1.0 は XML ...

Node.jsをゼロから学ぶ

目次URL モジュール1. 解析メソッド2. フォーマット方法3. 解決方法イベントモジュール(イベ...

CocosCreator Huarongdaoデジタルパズルの詳しい説明

目次序文文章1. パネル2. 華容島ソリューション3. コード4. 注記序文華容路とは何ですか? 誰...

MySQLの行ロックとテーブルロックの意味と違いの詳細な説明

1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...