概要
docker-composeしたあとにdocker exec
でちょこちょこっとコンテナの中身を修正してdocker restart
をかましたらRestatingが止まらなくなった時の対処法。
エラーの現象と原因
もうこの時点で原因は確実にちょこちょこっとした修正内容のせいですよね。
これはentrypointで所定の処理(修正したところ)をしようとしたときに例外で落ちてしまってdockerのrestart:alwaysが延々と続いてしまう現象が発生しています。
じゃぁ詳細な原因を見ようと以下のコマンドを叩くと。
docker logs コンテナID
そしたらちゃんとログが出てました。やっぱり修正した箇所が間違えてた…。
じゃあexecで修正しよかなと思ったら、そもそもRestartingしまくりでdocker exec
では入れねぇじゃん。
エラーの改善方法
Restartを殺す→駄目
よし、Restartしないようにしよう!と思って
docker update --restart=no コンテナ名
上記のように設定してやりました。
あれ・・・起動しないぞ。
!!!
そら落ちて再起動してんだから一回落ちると起動しなくなるよねと・・・。
docker update --restart=always コンテナ名
でもとに戻してじゃぁdocker run
かと思って調べたけどrunはイメージからの起動なので、あかんのですわ。イメージから新品のコンテナを起動しちゃうから。
作成済みのコンテナをentrypointを通さないように起動する方法はどうしたら…。
dokcer start -iでアタッチ→駄目
次はdokcer start -i
でダメ元でアタッチしてみたけどやっぱりスルッと落ちる。
まぁこれもそらそうだ。
ただ、ログが出てくるのでdocker logs
使うよりこれで見たほうが早いな。
やっぱりentrypointが邪魔してるなぁ。これを起動せずにコンテナを起動しないと。。。
google先生に色々聞くとstackoverflowに例のごとく記事があるけど、、、
結論(未解決)
もはやなんかすごくめんどくさそう。
stack over flowを見てもテクニカルな感じがしてとってもめんどくさくなってしまったので、
おとなしくdocker-composeからコンテナの再作成をしたほうが無難と判断してこの件はおしまいです。
そもそも作成したコンテナに異常があればイメージから再作成すればいいんだからってことなんだろうけど、ささっと確認したいときにdocker startでentrypoint触りたいなぁ。(それがそもそも間違いな気もするけど
ここまで引っ張っておいてごめんなさいね。。。
なんだかなー。
コメント