พอดีได้เห็น tweet หนึ่งมีคนเอา Dockerfile สำหรับ build Go แบบ basic สุดๆมาวาง แล้วให้คนใน twitter ช่วยๆกันทำให้มันดูดีขึ้น จาก tweet นี้ tweet เลยได้เห็นการใช้ tini แล้วก็สงสัยว่า ทำไมเราถึงจำเป็นต้องใช้มันด้วยนะ
พอได้ลองไปอ่านๆดูก็พบว่า มันดูมีอะไรพอสมควร เพราะตั้งแต่ docker version 1.13 เป็นต้นมา เวลาที่เราสั่งคำสั่ง docker run
เราสามารถเพิ่ม flag --init
เข้าไป เพื่อสั่งให้มันใช้เจ้า tini นี้ด้วยได้
แต่เข้าใจว่า ถ้าเราจะเขียน Dockerfile เราอาจจะยังต้องตั้งใจเขียนมันขึ้นมาเพื่อให้มันใช้ tini อยู่ดีครับ
ทีนี้ tini มันมีประโยชน์อย่างไร เขาอธิบายว่า ปกติแล้ว เมื่อเรากำหนดคำสั่ง ENDPOINT เข้าไปใน Dockerfile มันจะถูกกำหนดค่า PID ให้เป็นเลข 1 ซึ่งเราอาจจะไม่รู้ว่า ที่จริงแล้ว ความรับผิดชอบของ PID เลข 1 นั้น มันมีความหมายอื่น นั่นก็คือ มันมีหน้าที่ที่จะต้องคอยเก็บพวก Zombie process และสิ่งนี้ tini จะเข้ามาช่วยจัดการให้ และยังรับประกันว่า พวก signal ต่่างๆที่ถูกส่งเข้ามา จะยังถูก forward มาให้เราได้เหมือนเดิม
ส่วนรายละเอียดเกี่ยวกับ Zombie process และ tini ผมแนะนำให้ลองเข้าไปอ่านในหน้า github ของ tini เอง ก็จะมีข้อมูลที่มากกว่านี้ให้อ่านนะครับ
Top comments (0)