Jenkins統合Dockerプラグインの問題を解決するいくつかの方法

Jenkins統合Dockerプラグインの問題を解決するいくつかの方法

背景

テスト環境では、docker プラグインを統合した Jenkins を使用し、テスト環境のワンクリック デプロイメント サービスを実現しています。まず、Jenkins に docker build and publish プラグインをインストールしましたが、ジョブの動作に一連の問題が発生しました。

質問1

Docker 実行でエラーが報告され、ビルド ステップ「Docker ビルドと公開」でビルドが失敗としてマークされました。この文につながる問題は多数あります。より詳細なエラー情報: Jenkins コンテナーは docker 操作をサポートしていませんか?

問題の分析: Jenkins は docker を使用してデプロイされているため、Jenkins コンテナ内に docker 関連の操作コマンドがないため、実行が失敗します。

解決策: Docker コマンドラインを使用する前に、ホストの Docker 環境を Jenkins コンテナにマップする必要があります。

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

もう一度実行しても、結果はまだ間違っており、解決策はありません。

エラー 2

bin ディレクトリに実行可能なコマンドがないというメッセージが表示されますか?

分析: インストールした環境のコマンドラインをLinux環境で実行したい場合は、環境変数/usr/binを追加する必要があることがわかっています。

解決策: ホストのdocker実行可能コマンドのマッピングを続行する

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

ヒント: which コマンドは、コマンドやファイルを検索する whereis コマンドに似ています。前者はシステム環境変数内のコマンドをチェックし (最初の結果を返します)、後者はプログラム名に関連するパスを返します (一致するすべての結果を返します)。

エラー 3

関連する依存関係が見つかりません: 共有ライブラリのロード中にエラーが発生しました: libltdl.so.7: 共有オブジェクト ファイルを開けません: そのようなファイルはありません or/libltdl.so.7

分析: Jenkins コンテナ内では、コンテナがホストと共有されていないため、ライブラリはホスト上で見つかります: cd usr/lib64/

解決策: ホスト上でlibltdl.so.7依存ライブラリを見つけてコンテナをマウントする

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/jenkins_home:/var/jenkins_home -v /var/data/shell:/var/data/shell -u 0 -d jenkins/jenkins:lts

エラー4

基本認証資格情報なし 認証なし

原因の分析: このプラグインは、jenkins コンテナ内で docker コマンドを使用します。イメージのビルドにはエラーはありません。コンテナ内のイメージ リポジトリにプッシュする必要がある場合は、認証が必要です。

解決策: Jenkins ジョブに認証行を直接追加します。docker login --username=xxxx --password=xxxx nexus.xxxx.com

ヒント: コマンドを実行すると、現在のディレクトリに .credentials が生成され、Nexus イメージ リポジトリにログインするためのアカウントとパスワード情報が記録されます。

要約する

この時点で、前の手順は完了しており、jenkins コンテナ内で docker コマンドを使用できます。shh プラグインを使用してコンテナからホストにジャンプし、ビルドおよびプッシュ操作コマンドを実行する必要はありません。コンテナを起動するには、スクリプトを実行するだけです。

Docker コンテナ化では、ホストとコンテナ間でマッピングされるものはすべて同じです。つまり、コンテナ内のホストにマウントされたファイルが変更されても、コンテナ内でマウントされたホスト ファイルが変更されても、両方が同時に変更されます。

Jenkins 統合 Docker プラグインの問題を解決するいくつかの方法についての記事はこれで終わりです。Jenkins 統合 Docker プラグインの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Jenkins+Docker継続的インテグレーションの実装
  • Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル
  • ASP.NET Core+Docker+Jenkins による継続的インテグレーションの完全な例

<<:  Mysqlのprepare前処理の具体的な使用法

>>:  9999px に別れを告げる新しい CSS 画像置換テクニック (背景表示と画面外へのテキストの移動)

推薦する

JSは星を消すケースを実現する

この記事の例では、星を消すためのJSの具体的なコードを参考までに共有しています。具体的な内容は次のと...

Vue プロジェクトでよく使用されるツール機能の概要

目次序文1. カスタムフォーカスコマンド1. 方法1 2. 方法2 3. 方法3 2. 入力ボックス...

WEB中国語フォントアプリケーションガイド

Web 上でフォントを使用することは、基本的なスキルであると同時に芸術でもあります。英語のフォントに...

ubuntu14.04 に jdk1.8 をインストールするチュートリアル

1. jdkダウンロードアドレスをダウンロードする我下載的是jdk-8u221-linux-x64....

VueはTodoListの例をカプセル化し、ブラウザのローカルキャッシュのアプリケーションを実装します。

この記事では主に、Vue で TodoList をカプセル化するケースと、ブラウザのローカル キャッ...

Vue はカスタム「モーダル ポップアップ ウィンドウ」コンポーネントのサンプル コードを実装します

目次序文レンダリングサンプルコード要約する序文ダイアログ ボックスは非常に一般的なコンポーネントであ...

MySQL バージョンは、2 つのタイムスタンプ型の値をサポートしていないバージョンよりも低いです。

MySQL エラー:エラー コード: 1293 テーブル定義が正しくありません。CURRENT_T...

MySQL が UNION を使用して 2 つのクエリを接続できない理由の詳細な説明

概要連合接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外する...

JavaScript プロトタイプとプロトタイプチェーンの詳細

目次1. プロトタイプ(明示的なプロトタイプ) 2. __proto__ (暗黙のプロトタイプ) 3...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...

MySQL 8.0.13 のダウンロードとインストールのチュートリアル(画像とテキスト付き)

MySQL は最もよく使用されるデータベースです。詳しく知るには、コンピュータにインストールする必...

js での typeof の使い方を理解するための記事

目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...

NodeJSとブラウザにおけるこのキーワードの違い

序文JavaScript を学習した人なら誰でも、さまざまな環境で this がどこを指すかという問...

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...

フロントエンド開発に必要な共通ツール機能のまとめ

1. 時刻の書式設定とその他の方法moment.jsライブラリファイルの使用をお勧めします2. テン...