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 ベースのシンプルなカルーセルの実装

推薦する

Vueはルールを使用してフォームフィールドの検証を実装します

Vue でフォーム フィールドを記述および検証する方法は多数あります。このブログでは、より一般的に使...

Vue3 (パート 2) Ant Design Vue の統合

目次1. Ant Design Vueを統合する2. コンポーネントの使用1. 完全な引用2. コン...

DockerコンテナでArthasを使用するための詳細な手順

Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...

仮想スクロールを簡単に実装するためのVueサンプルコード

目次序文ローリング原理成し遂げるソースコード参照する序文モバイル Web ページの日常的な開発では、...

VS2019をMySQLデータベースに接続するプロセスと一般的な問題の概要

今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...

Linux dateコマンドの知識ポイントのまとめ

使用法: date [オプション]... [+フォーマット]または: date [-u|--utc|...

ボタンのタイプが送信として指定されていません。ボタンをクリックしても、指定された URL にジャンプしません。

現在、プロジェクトの要件により、フォームの送信を制御し、送信前にデータを検証および処理するために j...

Vue は div の高さをドラッグ可能にします

この記事では、divのドラッグ可能な高さを実現するためのVueの具体的なコードを参考までに共有します...

SQL 実践演習: オンライン モール データベース ユーザー情報データ操作

オンラインショッピングモールデータベース - ユーザー情報データ運用プロジェクトの説明電子商取引の台...

vue + Electron でデスクトップ アプリケーションを作成するためのサンプル コード

1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...

DockerでRedisを使用するための詳細な手順

1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...

Redmine の Docker インストール手順

イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...

JavaScript コンソールのその他の機能

目次概要コンソールログコンソール.infoコンソール.警告コンソールエラーコンソールテーブルコンソー...

Vue でデータが変更された後にビューを同期的に更新する方法

序文少し前に、興味深い問題を目にしました。Vue のデータが変更された後に、ビューを同期的に更新する...

MySQL の列から行への変換のヒント (共有)

序文:多くのビジネス テーブルでは、歴史的またはパフォーマンス上の理由により、最初のパラダイムに違反...