Jenkins を通じて None のイメージを定期的にクリーンアップする方法

Jenkins を通じて None のイメージを定期的にクリーンアップする方法

序文

継続的なコード配信のプロセスで、Jenkins を利用して Docker イメージを作成すると、None という名前の中間イメージが多数生成されます。これらのイメージは、プロジェクトの作成プロセス全体が完了した後はあまり重要ではありません。また、スペースを占有し、定期的にクリーンアップする必要があります。手動でのクリーンアップは非常に面倒なので、定期的なクリーンアップがあります。

Jenkins は、使用されるプラットフォームに関係なく、プロジェクトの継続的な統合と継続的な配信を可能にする強力なアプリケーションです。あらゆる種類のビルドや継続的インテグレーションを処理できる無料のソース コードです。 Jenkins との統合は、さまざまなテストおよびデプロイメント手法に使用できます。 Jenkins は継続的インテグレーションを可能にするソフトウェアです。

詳しい紹介を見てみましょう。

1. 手動洗浄

比較的単純なクリーンアップ方法は、単一の none イメージが生成された場合に、イメージをクリーンアップするコマンドを手動で実行する場合に適しています。次のコマンドを実行します。

docker rmi $(docker イメージ -f "dangling=true" -q)

ローカルにnoneのミラーがないので、実行時に次の効果しか見られません。

2. プロジェクト完了後の片付け

Jenkins で CI 準拠のプロジェクトをビルドする場合、プロダクション プロセスが完了した後のクリーンアップを、ビルド実行スクリプトで次のように設定できます。

スクリプトは次のとおりです。

echo ---------------クリア画像...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "クリーンアップが必要な画像はありません。"
それ以外
docker rmi $(docker イメージ -f "dangling=true" -q)
「明らかな成功」をエコーし​​ます。
フィ

プロジェクトをビルドするときにこれを実行すると、プロジェクト自体の構築プロセス中に生成された None イメージがクリアされ、プロジェクト自体の中間生成物がクリアされます。

ただし、重大な問題があります。2 つ以上のプロジェクトを同時にビルドしている場合、最初のビルドが完了した後に実行されるクリーンアップ スクリプトは、ビルド中のプロジェクトに影響を与え、ビルド プロセス中に生成された none を削除します。ただし、削除に失敗してエラーが発生し、最初のプロジェクトのビルドが失敗します。この方法は、複数のプロジェクトには推奨されません。Jenkins で実行されているタスクが 1 つだけの場合は、問題ありません。

3. スケジュールされたタスクのクリーンアップ

私はこの方法を好みます。新しい Jenkins スケジュール タスクを作成します。たとえば、夜の 12 時に none のミラーをクリーンアップするように設定します。手順は次のとおりです。

1. Jenkins で任意の名前 (私の場合は ClearImage) で新しいプロジェクトを作成します。

2. トリガーを作成し、Poll SCM を選択して、スケジュールされた時間を設定します。たとえば、早朝にクリーンアップするように設定しましたが、他の時間を設定することもできます。具体的な設定ルールについては、右側の疑問符を参照してください。

3. ビルド スクリプトを実行します。スクリプトの内容は既に指定されています。保存するだけです。

即時ビルドを手動で実行して、それが有効かどうかを確認します。

コンソール出力を表示します。

出力が完了しました: ビルドが成功しました。


要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Jenkins を使用して Git+Maven 自動ビルドを設定する方法
  • Asp.net Core Jenkins Docker のワンクリックデプロイの実装
  • CentOS7 で Jenkins+Maven+Git 継続的インテグレーション環境を構築する方法
  • Jenkins のインストールと設定に関する注意事項
  • Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明
  • Jenkins の紹介と Docker で Jenkins をデプロイする方法
  • Jenkins での Log Parse の使い方の詳細な説明
  • Docker コンテナは Jenkins を使用して Web プロジェクトをデプロイします (概要)
  • Jenkins で Springboot アプリケーションを自動的にデプロイする方法の詳細な説明
  • Jenkins の Publish Over SSH プラグインを使用してプロジェクトをリモート マシンにデプロイする手順

<<:  Xampp サーバーで MySQL パスワードを変更する方法 (画像付き)

>>:  JavaScript ベースのシンプルなカルーセルの実装

推薦する

MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明

背景mysql.slow_log からスロー クエリ ログを取得するのは遅く、テーブルは csv テ...

Zabbix カスタム監視 nginx ステータス実装プロセス

目次Zabbix カスタム監視 nginx ステータス1. ステータスインターフェースを開く2. 監...

MySQLインデックスの基礎となるデータ構造の詳細

目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...

Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...

MySQL 5.7 データベースのインストール手順の個人的な要約

1.mysql-5.7.19-winx64.zip(これは無料のインストールバージョンで、約318 ...

MySQL 1130例外、リモートログインできない解決策

目次質問: 1. リモートログイン権限を有効にする: 2. MySQLの権限を更新します。 3. テ...

Docker用国産イメージウェアハウスの使い方

1. 問題の説明何らかの理由により、中国でのDockerイメージのダウンロード速度は特に遅くなります...

優れた UI (ユーザー インターフェース) デザイナーになるための 20 の道標

はじめに: インターフェイス デザイナーの Joshua Porter が自身のブログでこの記事を公...

Tomcat および Web アプリケーションの Docker デプロイメントの実装

1.dockerをオンラインでダウンロードする yum インストール -y epel-release...

MySQL で datetime 型のデフォルト値を設定する方法

Navicat クライアントを通じてデフォルトの日時値を変更する際に問題が発生しました。データベース...

Linux デバイスに空き容量がありません inode の満杯により 500 エラーが発生します

iノードとは何ですか? inode を理解するには、まずファイル ストレージから始める必要があります...

カルーセル例の JS 実装

この記事では、カルーセルチャートの小さなケースを実装するためのJSの具体的なコードを参考までに共有し...

純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーするのを防ぐ方法

序文私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさま...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

Dockerコンテナの個別展開のためのLNMPの実装

1. 環境整備各コンテナの IP アドレス: nginx: 172.16.10.10マイSQL: 1...