Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール

1. イメージリポジトリからイメージをダウンロードします。

[root@localhost ~]# systemctl dockerを起動します

#すでに画像がある場合、元の画像を強制的に削除する方法は次のとおりです。
[root@xxx-pub /]# docker rmi -f docker.io/registry
タグなし: docker.io/registry:latest
タグなし: docker.io/registry@sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
[root@xxx-pub /]#

#最新のイメージのダウンロードを開始します。
[root@localhost ~]# docker pull レジストリ
デフォルトタグの使用: 最新
最新: ライブラリ/レジストリから取得
4064ffdc82fe: プル完了 
c12c92d1c5a2: プル完了 
4fbc9b6835cc: プル完了 
765973b0f65f: プル完了 
3968771a7c3a: プル完了 
ダイジェスト: sha256:20bbbc0f6384cf7dc6e292ccbe75935b73c92ec776543c970904bc60feceb129
ステータス: レジストリの新しいイメージをダウンロードしました:最新
[root@localhost ~]#

2. イメージリポジトリを起動し、ローカルディスクにマウントします。

[root@xxx-pub /]# docker run -d -v /registry:/home/docker-registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
イメージ 'registry:latest' がローカルに見つかりません
リポジトリ docker.io/library/registry をプルしようとしています... 
最新: docker.io/library/registry からプル
ダイジェスト: sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
ステータス: docker.io/registry:latest の新しいイメージをダウンロードしました
b7bd2b14ed488936afe798be95f3cd56f604fb092d45cf6f4a58359bcad0d34c
[root@xxx-pub /]#
  • -v /registry:/home/docker-registry: デフォルトでは、リポジトリはコンテナ内の /home/docker-registry ディレクトリに保存され、指定されたローカル ディレクトリがコンテナにマウントされます。
  • -p 5000:5000 : ポートマッピング。つまり、ローカル ポート 5000 はレジストリ内のポート 5000 にマップされます。
  • –restart=always1: コンテナが終了したら必ず再起動します。主に本番環境で使用されます。
  • –privileged=true: CentOS7 のセキュリティ モジュール selinux は権限を無効にします。このパラメーターはコンテナに権限を追加します。イメージをアップロードするときに権限を追加しないと、同様の権限エラーが報告されます。 OSError: [Errno 13] アクセス権が拒否されました: '/tmp/registry/repositories/liibrary') または (予期しない HTTP ステータスを受信しました: 500 内部サーバー エラー)
  • –name registry: コンテナの名前を指定します。

データを永続化するには、ボリュームを/home/docker-registryにマウントします。

3. ローカル画像にタグを付けてアップロードします。

利用可能なローカル イメージを確認します。

[root@xxx-pub /]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
docker.io/centos centos7.5.1804 fdf13fa91c6e 4 週間前 200 MB
docker.io/registry 最新 b2b03e9146e1 2 か月前 33.3 MB
[root@xxx-pub /]#

docker.io/centos を例に挙げます。

[root@xxx-pub /]# docker タグ fdf13fa91c6e localhost:5000/xxx-centos7.5.1804:1.0
##localhost:5000 は倉庫のアドレス、fdf13fa91c6e はイメージ ID、xxx-centos7.5.1804 はイメージ名、1.0 はバージョン番号を表します。

または:
[root@xxx-pub /]# docker タグ docker.io/centos:centos7.5.1804 localhost:5000/xxx-centos7.5.1804:1.0

4. 直接アップロード:

[root@xxx-pub /]# docker push ローカルホスト:5000/xxx-centos7.5.1804:1.0
プッシュはリポジトリ [localhost:5000/xxx-centos7.5.1804] を参照します
bcc97fbfc9e1: プッシュ 
1.0: ダイジェスト: sha256:7c14180942615fef85cb5c8b1388e028be1a8f79694a5fa30a4025173e42ad61 サイズ: 529
[root@xxx-pub /]#

PUSH プロセス中に、次のようなエラーが報告される場合があります (以下はインターネット上のエラー プロンプトです)。

[root@localhost ~]# docker push 192.168.174.128:5000/hello:latest
プッシュはリポジトリ [192.168.174.128:5000/hello] を参照します
レジストリ エンドポイント https://192.168.174.128:5000/v0/ に ping できません
v2 ping の試行がエラーで失敗しました: Get https://192.168.174.128:5000/v2/: http: サーバーが HTTPS クライアントに HTTP 応答を返しました
 v1 ping の試行がエラーで失敗しました: Get https://192.168.174.128:5000/v1/_ping: http: サーバーは HTTPS クライアントに HTTP 応答を返しました
[root@localhost ~]#

解決:

https を使用して、/etc/sysconfig/docker (ここでは Centos7 の docker) ファイルを変更し、以下に示すように、ADD_REGISTRY='--add-registry 192.168.18.162:5000'、INSECURE_REGISTRY='--insecure-registry 192.168.18.162:5000' (上記は、従来の docker バージョンの構成) を追加します。

ただし、新しい Docker コンテナ リポジトリの構成では、独自の Docker コンテナの構成が採用されます (ここでは、Docker レジストリと、他のプル イメージがプルされるマシンの両方で次の構成が指定されます)。

指定が完了したら、Docker を再起動します。再起動の構成は次のとおりです。

[root@youx-pub ボリューム]# systemctl docker を再起動します

さらに、docker.service と構成ファイルを確認します。

[root@youx-pub レジストリ] find / -name docker.service
/sys/fs/cgroup/memory/system.slice/docker.service
/sys/fs/cgroup/devices/system.slice/docker.service
/sys/fs/cgroup/blkio/system.slice/docker.service
/sys/fs/cgroup/cpu、cpuacct/system.slice/docker.service
/sys/fs/cgroup/pids/system.slice/docker.service
/sys/fs/cgroup/systemd/system.slice/docker.service
docker.service は、/usr/lib/systemd/system/docker.service にあります。
[root@youx-pub レジストリ]# vim /usr/lib/systemd/system/docker.service 


次に以下を実行します:

#systemctl起動時に使用できるdocker.serviceファイルが変更になったため、以下の設定を行う必要があります。次にdocker restart work systemctl daemon-reloadを実行します。
systemctl dockerを再起動します

以下のエラーが引き続き報告される場合:

[root@youx-pub レジストリ]# docker push 192.168.18.162:5000/nginx:1.2
プッシュはリポジトリ [192.168.18.162:5000/nginx] を参照します
https://192.168.18.162:5000/v1/_ping を取得: http: サーバーが HTTPS クライアントに HTTP 応答を送信しました
[root@youx-pub レジストリ]#

解決策は次のとおりです。

次の内容で /etc/docker の下に daemon.json を作成します。

{"安全でないレジストリ":["192.168.18.162:5000"]}

次に、Docker コンテナを再起動します。

[root@youx-pub ボリューム]# systemctl docker を再起動します

5. アップロードが完了したら、マウントされたディレクトリにイメージがあるかどうかを確認できます。

[root@xxx-pub docker-registry]# pwd
/home/docker-レジストリ
[root@xxx-pub docker-registry] # ls /registry/
ドッカー

6. ローカル画像の表示について:

[root@xxx-pub docker-registry]# curl http://192.168.18.162:5000/v2/_catalog
{"リポジトリ":["xxx-centos7.5.1804","xxx-centos7.5.1804-v1.0"]}
[root@xxx-pub docker-registry]#

7. 画像が 2 つあるので、ダウンロードするにはタグ情報を取得する必要があります。

[root@xxx-pub docker-registry]# curl http://192.168.18.162:5000/v2/xxx-centos7.5.1804/tags/list
{"名前":"xxx-centos7.5.1804","タグ":["1.0"]}
[root@xxx-pub docker-registry]#

8. 次に、イメージを直接(別のコンピューターに)ダウンロードします。

[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0
デフォルトタグの使用: 最新
リポジトリ 192.168.18.162/youx-centos7.5.1804 をプルしようとしています... 
https://192.168.18.162/v1/_ping を取得: ダイヤル tcp 192.168.18.162:443: getsockopt: ホストへのルートがありません
[root@bigdata2 ~]#

上記の状況が発生した場合の解決策は次のとおりです。

コンパイル:

[root@youx-pub volumes]# vim /etc/containers/registries.conf このファイル。
古いものは編集します: /etc/sysconfig/docker


次にdockerを再起動します

[root@youx-pub ボリューム]# systemctl docker を再起動します

そして私は引っ張ることができることに気づいた

#ここでのアドレスは、倉庫アドレス: 倉庫ポート番号/リポジトリ: タグであることに注意してください。
[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0 

それでも動作しない場合は、/etc/docker/daemon.json を変更する必要があります。内容は次のとおりです。

[root@bigdata2 docker]# cat daemon.json 
{"安全でないレジストリ":["192.168.18.162:5000"]}

2. 別のマシンからイメージを Docker イメージ リポジトリにアップロードします。

[root@bigdata2 ~]# docker tag centos7-jdk8-nginx:1.0 192.168.18.162:5000/centos7-jdk8-nginx:1.0
[root@bigdata2 ~]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
192.168.18.162:5000/centos7-jdk8-nginx 1.0 bcacd65e2a2e 2 分前 2.18 GB

[root@bigdata2 ~]# docker push 192.168.18.162:5000/centos7-jdk8-nginx:1.0
プッシュはリポジトリ [192.168.18.162:5000/centos7-jdk8-nginx] を参照します
f018e9c38a66: プッシュ 
2a47dcd341ef: プッシュ 
c5dea3bc729a: プッシュ 
bcc97fbfc9e1: プッシュ 
1.0: ダイジェスト: sha256:d907ff2f8eb590209700c01ce85c78d0bc778a4238539d747e4667d68cb52102 サイズ: 1163
[root@bigdata2 ~]#

次に、Docker イメージ ウェアハウスの場所を入力します。

[root@youx-pub レジストリ]# curl http://192.168.18.162:5000/v2/_catalog
{"リポジトリ":["centos7-jdk8-nginx","nginx"]}
[root@youx-pub レジストリ]# curl http://192.168.18.162:5000/v2/centos7-jdk8-nginx/tags/list
{"名前":"centos7-jdk8-nginx","タグ":["1.0"]}
[root@youx-pub レジストリ]#

3. ローカルイメージを削除するにはどうすればいいですか? 通常、削除機能は提供されていないため、サードパーティのプラグインを使用して削除します。

github 上のプラグインの場所:
https://github.com/burnettk/delete-docker-registry-image

1. リソースをダウンロードする

[root@マスターレジストリ]# curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null

sudo chmod a+x /usr/local/bin/delete_docker_registry_image 

2. 関連するリンク変数を設定します。

REGISTRY_DATA_DIR を見つけるには、次のコマンドを実行します。
[root@youx-pub レジストリ]# find / -name レジストリ
[root@youx-pub レジストリ]# find / -name レジストリ
/var/lib/docker/overlay2/d72320cd67b42f7ae66342cc6dedab7abe5e89106de8c4919ec8c5a6e5940b09/差分 /var/lib/ucf/レジストリ
/var/lib/docker/overlay2/92211417089f7be8239def550e1e89ce3f0e50ac57f2c36ba723ca312ea06ae3/diff/bin/レジストリ
/var/lib/docker/overlay2/c1716aea0b380eb94ead9aa02552769acd4c3dac8e6dab735997f1709ce79a33/diff/etc/docker/レジストリ
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/diff/var/lib/レジストリ
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/マージ済み/bin/レジストリ
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/マージ済み/etc/docker/レジストリ
/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/マージ済み/var/lib/レジストリ
/var/lib/docker/ボリューム/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/レジストリ
/opt/データ/レジストリ
/レジストリ
[root@youx-pub レジストリ]#
[root@youx-pub リポジトリ]# pwd が見つかりました
/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2/リポジトリ
[root@youx-pub リポジトリ]# ls
centos7-jdk8-nginx nginx
[root@youx-pub リポジトリ]#

したがって、イメージ リポジトリの場所を次のように設定します。
[root@マスターレジストリ]# エクスポート REGISTRY_DATA_DIR=/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2

アドレスはマウントアドレスです:

関連タグをご覧ください:

[root@youx-pub レジストリ]# curl http://192.168.18.162:5000/v2/_catalog
{"リポジトリ":["youx-centos7.5.1804","youx-centos7.5.1804-v1.0"]}
[root@youx-pub レジストリ]# curl http://192.168.18.162:5000/v2/youx-centos7.5.1804-v1.0/tags/list
{"名前":"youx-centos7.5.1804-v1.0","タグ":["最新"]}
[root@youx-pub レジストリ]#

その後すぐに削除できます:

[root@マスターレジストリ]# delete_docker_registry_image --image youx-centos7.5.1804-v1.0:latest

情報 [2017-04-08 11:39:39,793] /registry/docker/registry/v2/repositories/nginx/_manifests/tags/v1 を削除しています
ローカル倉庫の鏡像を見てみましょう。

[root@マスターレジストリ]# curl http://192.168.18.162:5000/v2/_catalog
{"リポジトリ":["youx-centos7.5.1804"]}

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

以下もご興味があるかもしれません:
  • .NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します
  • Dockerのローカルイメージ作成方法の分析
  • Tomcat イメージをインストールして Docker に Web プロジェクトをデプロイする方法を簡単に説明します。
  • Spring Boot パッケージング Docker イメージの最もシンプルな実装
  • Spring Boot プロジェクトで Docker イメージを生成し、コンテナのデプロイを完了する方法
  • Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法
  • Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明
  • DockerHubイメージリポジトリの使い方の詳しい説明
  • Docker イメージ管理の一般的な操作コード例

<<:  Vue computedのキャッシュ実装原理の詳細な説明

>>:  MySQL 5.7.19 のインストールと設定方法のグラフィック チュートリアル (win10)

推薦する

Tomcat でタイムアウトしたセッションを監視および削除する方法

序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...

最初のReactページを作成する方法

目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...

HTML チェックボックスとラジオボタンスタイルの美化の簡単な例

HTML チェックボックスとラジオボタンスタイルの美化の簡単な例チェックボックス: XML/HTML...

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用...

MySQL のストアド プロシージャを使用して 100 万件のレコードをすばやく生成する方法

序文テストを行う際、大量のデータによる負荷に耐えるプロジェクトの能力をテストするために、通常はテスト...

Linux に JDK1.8 をインストールするための詳細なチュートリアル

1. 設置前の清掃 rpm -qa | grep jdk rpm -qa | grep gcj yu...

MySQL は information_schema オブジェクトの付与をバイパスし、ERROR 1044 (4200) エラーを報告します

この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...

海外のウェブページのカラーマッチング事例20選共有

この記事では、優れた Web ページのカラー マッチングの事例を 20 件集めて紹介します。これらの...

小さなページングデザイン

ユーザーが目的のものを探すために前進するか後退するかを選択できるようにします。たとえば、Taobao...

MYSQLデータベースの最適化段階を簡単に理解する

導入面接官がこんな質問をしたことはありませんか?データベースをどのように最適化しますか?では、この質...

nginx のロケーションと書き換えの使用法の詳細な説明

1. 位置情報の利用状況の概要ロケーションは、さまざまな処理方法に対してさまざまな種類のリクエストを...

MySQLの起動と接続方法の例分析

目次mysqldの起動方法方法 1: mysqld方法 2: mysqld_safe方法3: mys...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

Dockerデータストレージのバインドマウントの詳細な説明

この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こち...

ラムダ式の原則と例

ラムダ式ラムダ式 (クロージャとも呼ばれる) は、Java 8 のリリースを推進した最も重要な新機能...