タグ

Bashとdockerに関するtoromotiのブックマーク (2)

  • Dockerコンテナ内の子プロセスを安全に殺してから親が死ぬ実装 - 技術野郎の復習

    Docker, Immutable Infrastructure, Linux, Bash, Tool前段今日のタイトル怖い。この前、こんなの書いた。supervisordを使わずにコンテナ内で安全に複数のプロセスを走らせる - 技術野郎の復習このなかで、「コンテナ内の子プロセスを安全に止めるには親のSIGINTをトラップして、子プロセスを安全に殺してから親が死ねばいいじゃん。で、それやるんだったらsupervisordとかのプロセス管理ツール使えばいいけど、ちょっと大げさじゃね?」っていう話をした。*1ディスポーザブルなのに再起動supervisordとかmonitのやってくれるプロセス再起動がそんなにおいしいもんじゃなくね?って言ったのはあんまり深い意味はなくて、再起動してくれたら嬉しい場面もあるけど嬉しくない場面もあるし、ディスポーザブルって考えると死んじゃったらあっさり捨てて作りな

  • supervisordを使わずにコンテナ内で安全に複数のプロセスを走らせる - 技術野郎の復習

    Docker, Bash 親はSIGINT、子はSIGKILLコンテナは基的には One Work, One Container であるべきなんだけど、現状コンテナ内で複数のプロセスを走らせたいという状況はよくあると思う。Dockerコンテナ内で複数のプロセスを走らせるのなら、supervisordを使うと良いよっていうのは公式に書いてある。なんでかっていうと例えば、docker run -d centos multiexec.shとやってmultiexec.shの中で複数のプロセスをフォークさせていた場合、普通にdocker stopでコンテナを停止させると親プロセスにはSIGINTが送られるが、親プロセスの停止と同時に子プロセスはSIGKILLになるという動作になるからだ。 supervisordでプロセス管理…はやりすぎつまり、これでは子プロセスが安全に停止する猶予がないので、su

    toromoti
    toromoti 2014/04/16
    書いた
  • 1