đ§ DAY 2: Linux + Container Reality (Minimal but Critical)
đ¯ āĻāĻāĻā§āϰ āϞāĻā§āώā§āϝ:
Docker crash āĻšāϞ⧠panic āύāĻž āĻāϰāĻžāĨ¤ Docker āĻāύā§āĻā§āĻāύāĻžāϰ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§, āϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύā§ā§ Linux process model āĻ Container concepts āĻĒāϰāĻŋāώā§āĻāĻžāϰāĻāĻžāĻŦā§ āĻŦā§āĻāĻžāĨ¤
đ Topics:
1. Linux Process Model (Basic)
- Linux Process Model: āϞāĻŋāύāĻžāĻā§āϏā§āϰ āĻŽāϧā§āϝ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻžāύāĻŋāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŦāĻž āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻāĻāĻāĻŋ āĻĒā§āϰāϏā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻāϞāĻŽāĻžāύ āĻĨāĻžāĻā§āĨ¤
- āĻāĻāĻāĻŋ āĻĒā§āϰāϏā§āϏā§āϰ āĻŽāϧā§āϝ⧠PID (Process ID) āĻĨāĻžāĻā§, āϝāĻž āϤāĻžāĻā§ āĻāĻāύāĻŋāĻāĻāĻžāĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰāϏā§āϏā§āϰ āϏāĻžāĻĨā§ āĻāĻŋāĻā§ āĻāύāϏā§āĻĒā§āĻ āϝā§āĻā§āϤ āĻĨāĻžāĻā§, āϝā§āĻŽāύ:
- Forking: āϝāĻāύ āĻāĻāĻāĻŋ āĻĒā§āϰāϏā§āϏ āύāϤā§āύ āϏāĻžāĻŦ-āĻĒā§āϰāϏā§āϏ āϤā§āϰāĻŋ āĻāϰā§, āϤāĻāύ āϏā§āĻāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āĻĒā§āϰāϏā§āϏ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
- Signal Handling: āĻĒā§āϰāϏā§āϏ⧠āϏāĻŋāĻāύā§āϝāĻžāϞ āĻĒāĻžāĻ āĻžāύ⧠āĻšā§ āĻŦāĻŋāĻāĻŋāύā§āύ āϰāĻāĻŽā§āϰ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ (āϝā§āĻŽāύ, āĻĒā§āϰāϏā§āϏ āĻŦāύā§āϧ āĻāϰāĻž, āĻĒā§āύāϰāĻžā§ āĻāĻžāϞāĻžāύā§, āĻāϤā§āϝāĻžāĻĻāĻŋ)āĨ¤
2. Container = Isolated Process
- Container āĻāϏāϞ⧠āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āϞāĻŋāύāĻžāĻā§āϏ āĻĒā§āϰāϏā§āϏ, āϝāĻž Isolation āĻĻāĻŋā§ā§ āĻāϞāĻā§āĨ¤ āϝāĻāύ āϤā§āĻŽāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰ āϰāĻžāύ āĻāϰā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āϞāĻŋāύāĻžāĻā§āϏ āĻĒā§āϰāϏā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŋāύā§āϤ⧠āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻĨā§āĻā§ āĻāϞāĻžāĻĻāĻž āĻĨāĻžāĻā§āĨ¤
- āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ⧠āϝ⧠āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻāĻŋāϤāϰ āϝāĻž āĻāĻŋāĻā§ āĻāĻāĻŦā§, āϏā§āĻāĻž āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻā§āύ⧠āĻĒā§āϰāĻāĻžāĻŦ āĻĢā§āϞāĻŦā§ āύāĻž, āϝāϤāĻā§āώāĻŖ āύāĻž āϤā§āĻŽāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻžāĻĨā§ āĻāύā§āĻāĻžāϰāĻ
ā§āϝāĻžāĻā§āĻ āύāĻž āĻāϰā§āĨ¤ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝā§
rm -rf /āĻāϰāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻĢāĻžāĻāϞ āϏāĻŋāϏā§āĻā§āĻŽ āĻŽā§āĻā§ āϝāĻžāĻŦā§, āĻāĻŋāύā§āϤ⧠āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻŋāĻā§āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāĻŦā§ āύāĻžāĨ¤
3. PID 1 Concept
- PID 1: āϞāĻŋāύāĻžāĻā§āϏ⧠āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϰāϏā§āϏāĻāĻŋ āĻšāϞ⧠PID 1, āϝāĻž āĻĒā§āϰ⧠āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāύā§āϝ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻāĻŋāĻ āϰā§āĻ āĻĒā§āϰāϏā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
- āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝā§, āϝāĻāύ āϤā§āĻŽāĻŋ āĻā§āύ⧠āĻāĻŽāĻžāύā§āĻĄ āϰāĻžāύ āĻāϰ⧠(āϝā§āĻŽāύ
docker run), āϤāĻāύ āϝ⧠āĻĒā§āϰāϏā§āϏ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻžāϞ⧠āĻšā§, āϏā§āĻāĻŋāĻ PID 1āĨ¤ āĻāĻāĻž āϝāĻĻāĻŋ āĻŦāύā§āϧ āĻšā§ā§ āϝāĻžā§, āĻĒā§āϰ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āĻŦāύā§āϧ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ - āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠PID 1 āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻā§āϰā§āϤā§āĻŦ āĻŦāĻšāύ āĻāϰā§, āĻāĻžāϰāĻŖ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻā§āĻŦāύ āĻāĻŦāĻ āĻŽā§āϤā§āϝā§āϰ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻāĻ āĻĒā§āϰāϏā§āϏā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤
4. SIGTERM vs SIGKILL
-
SIGTERM: āĻāĻ āϏāĻŋāĻāύā§āϝāĻžāϞāĻāĻŋ āĻĒā§āϰāϏā§āϏāĻā§ āĻŦāύā§āϧ āĻāϰāϤ⧠āĻŦāϞā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻĒā§āϰāϏā§āϏāĻā§ āϏā§āύā§āĻĻāϰāĻāĻžāĻŦā§ āĻŦāύā§āϧ āĻšāϤ⧠āϏāĻŽā§ āĻĻā§ā§āĨ¤
- āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϰā§āϏāĻĢā§āϞ āĻļāĻžāĻāĻĄāĻžāĻāύ āϏāĻŋāĻāύā§āϝāĻžāϞāĨ¤
- āϝāĻĻāĻŋ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ āĻŦāύā§āϧ āĻāϰāϤ⧠āĻāĻžā§, āϤāĻŦā§ āĻāĻāĻŋ SIGTERM āĻĒāĻžāĻ āĻžā§āĨ¤
- āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝā§
docker stopāĻāĻŽāĻžāύā§āĻĄ āĻāĻžāϞāĻžāϞ⧠SIGTERM āϏāĻŋāĻāύā§āϝāĻžāϞāĻāĻŋ āĻĒāĻžāĻ āĻžāύ⧠āĻšā§āĨ¤
-
SIGKILL: āϝāĻĻāĻŋ SIGTERM āϏāĻŋāĻāύā§āϝāĻžāϞ āĻā§āύ⧠āĻāĻžāϰāĻŖā§ āĻāĻžāĻ āύāĻž āĻāϰā§, āϤāĻāύ āϏāĻŋāϏā§āĻā§āĻŽ SIGKILL āĻĒāĻžāĻ āĻžā§, āϝāĻž āĻĒā§āϰāϏā§āϏāĻā§ āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻāĻŦāĻ āĻāύāϞāĻŋāϏā§āĻā§āĻĄāĻāĻžāĻŦā§ āĻŦāύā§āϧ āĻāϰ⧠āĻĻā§ā§āĨ¤
- āĻāĻāĻŋ āĻā§āϰā§āϏāĻĢā§āϞ āĻļāĻžāĻāĻĄāĻžāĻāύ āύā§, āĻāĻāĻŋ āĻĻā§āϰā§āϤ āĻāĻŦāĻ āĻāĻŦāϰāĻĻāϏā§āϤ āĻŦāύā§āϧ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻžā§āĨ¤
5. Memory Limit Concept
- Memory Limit: Docker āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻāύā§āϝ memory limit āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšā§āĨ¤ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒāϰāĻŋāĻŽāĻžāĻŖ RAM āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
- āϝāĻĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻŽā§āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžā§, āϤāĻžāĻšāϞ⧠āĻāĻāĻŋ out-of-memory (OOM) āĻšā§ā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āĻāύā§āĻā§āĻāύāĻžāϰ āĻŦāύā§āϧ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤
- āĻāĻāĻŋ āĻāĻ āϧāϰāύā§āϰ safety net āϝā§āĻāĻŋ āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϰāĻŋāϏā§āϰā§āϏ āĻāϰāĻ āĻ ā§āĻāĻžāύā§āϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
â Questions:
-
Docker stop āĻĻāĻŋāϞ⧠āĻāĻŋāϤāϰ⧠āĻā§ āĻāĻā§?
- āϝāĻāύ
docker stopāĻāĻŽāĻžāύā§āĻĄ āĻĻā§āĻā§āĻž āĻšā§, āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻāĻŋāϤāϰ⧠SIGTERM āϏāĻŋāĻāύā§āϝāĻžāϞ āĻĒāĻžāĻ āĻžāύ⧠āĻšā§āĨ¤ āĻāĻāĻŋāϰ āĻĢāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻŽā§āϞ āĻĒā§āϰāϏā§āϏ (PID 1) āĻā§āϰā§āϏāĻĢā§āϞāĻāĻžāĻŦā§ āĻŦāύā§āϧ āĻšāϤ⧠āĻļā§āϰ⧠āĻāϰā§, āĻāĻŦāĻ āĻāύā§āĻā§āĻāύāĻžāϰāĻāĻŋ āϧā§āϰ⧠āϧā§āϰ⧠āĻļāĻžāĻāĻĄāĻžāĻāύ āĻšā§āĨ¤
- āϝāĻāύ
-
PID 1 special āĻā§āύ?
- āĻāύā§āĻā§āĻāύāĻžāϰ⧠PID 1 āĻšāϞ⧠āϏā§āĻ āĻĒā§āϰāϏā§āϏ āϝāĻž āĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻā§āĻŦāύ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻāϰā§āĨ¤ āĻāĻāĻŋ āύāĻž āĻĨāĻžāĻāϞ⧠āĻāύā§āĻā§āĻāύāĻžāϰ āĻŽāϰ⧠āϝāĻžā§, āĻāĻžāϰāĻŖ āĻāĻāĻž āĻĒā§āϰāĻĨāĻŽā§ āĻāϞ⧠āĻāĻŦāĻ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒā§āϰāϏā§āϏāĻā§āϞā§āϰ āĻāύā§āϝ parent āĻĒā§āϰāϏā§āϏ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
-
Memory limit āĻĻāĻŋāϞ⧠app āĻā§āύ āĻŽāĻžāϰāĻž āϝāĻžā§?
- āϝāĻāύ memory limit āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšā§ āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϤāĻžāϰ āϏā§āĻŽāĻž āĻāĻžā§āĻŋā§ā§ āϝāĻžā§, āϤāĻāύ āĻāĻāĻŋ out-of-memory (OOM) āĻšā§ā§ āϝāĻžā§ āĻāĻŦāĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ āĻŦāύā§āϧ āĻāϰ⧠āĻĻā§ā§āĨ¤
đ ī¸ Practice:
1. Run Alpine with Shell (Interactive Mode):
- āĻāĻāύ āϤā§āĻŽāĻŋ alpine āĻāύā§āĻā§āĻāύāĻžāϰ āϰāĻžāύ āĻāϰ⧠āϤāĻžāϰ āĻļā§āϞā§āϰ āĻāĻŋāϤāϰ⧠āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻŦā§āĨ¤ Alpine āĻāĻāĻāĻŋ āϞāĻžāĻāĻāĻā§ā§āĻ āϞāĻŋāύāĻžāĻā§āϏ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻļāύ, āϝāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ Docker āĻāĻŽā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
docker run -it alpine sh