私は、共有Jenkinsクラスタで何百ものジョブを実行する大規模な組織で働いています。Jenkinsジョブの終了後に孤立したドッカーコンテナをクリーニングする
私のJenkinsの仕事は、Dockerコンテナ内で実行されている信頼できないコードに対して統合テストを実行する必要があります。私はジェンキンスの仕事が突然終了すると(ジョブが中止されたりタイムアウトするなど)孤児のコンテナが残ってしまうことに恐れています。
https://github.com/moby/moby/issues/1905とulimits
は私にとってはうまくいきませんでした(これはit only works for containers that run bash
なので、私がそうすることは保証できません)。
https://stackoverflow.com/a/26351355/14731を試しましたが、--lxc-conf
は、Docker for Windows(これはdockerでサポートされているすべてのプラットフォームで実行する必要があります)では認識されないオプションです。
アイデア?
私のJenkinsジョブが強制終了され、再び実行されない場合はどうなりますか?ポイントは、私は自分自身でコンテナをシャットダウンするのに十分な長さになることを保証することはできません。その場合は – Gili
を実行し、-d(デタッチしたものやデーモンと思われる)の代わりに-i(対話式)を使ってコンテナを実行し、次のようなコマンドでテストを起動してください: 'docker run -i --name go_web_tests $ {JOB_NAME} shテスト.sh' プロセスが完了するとコンテナが死んでしまい、死んだコンテナが心配な人は、次のビルドをクリーンアップすることができます – martinkenneth
残念ながら、私の場合はうまくいかないと思います。私のユニットテストは複数のコンテナ(例えばmysqlとwordpress)に依存しているので、対話モードでそれらのうちの1つだけを起動することができます。 – Gili