.png&w=3840&q=75)
【#も読】DockerなどのコンテナにおけるSIGTERMの取り扱い(@yusuktan)
「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?
みなさんこんにちは。
「あの人も読んでる」、第6回目の投稿です。maguro (X @yusuktan)がお届けします。
今回のテーマ: DockerなどのコンテナにおけるSIGTERMの取り扱い
現代において開発環境・本番環境問わず無くてはならない基幹技術であるコンテナ。多くの方がDockerfileを書いた・読んだ経験があることと思います。
そんなコンテナ技術ですが、細かいところまで挙動を把握して利用できているでしょうか?僕の答えはNoです。
コンテナを支える裏側の技術(Linuxのnamespaces, cgroupsなど)についてかなり大雑把な理解をしつつ、なんとなく既存のDockerfileを参考にして真似して書いてみたりして、とりあえず意図通り動いてそうであればOKとしていることが結構ありました。
そんな中、以下の動画を見て大変おもしろかったのでご紹介しようと思います。
DockerfileのCMD深堀り解説:CMDを完全に理解している人いない説
この動画は、Dockerfile における CMD 命令の挙動を、プロセスの親子関係やシグナル伝播の観点から詳細に解説しています。
シェル形式(CMD node server.js)とexec形式(CMD ["node", "server.js"])の違いを通じて、どのプロセスが PID 1 として起動するか、それがSIGTERM(docker stop したときにコンテナ内の PID=1 なプロセスにSIGTERMが送られる)をどう扱うかに焦点を当てています。この2つの形式で具体的にどう変わるのか、ご存知でしょうか?