Docker· ~15 นาที
Volumes และ Networking
เก็บข้อมูลไม่ให้หาย และให้คอนเทนเนอร์คุยกัน/เข้าถึงจากภายนอก
ไฟล์ในตัว container เหมือนกระดาษทดที่ฉีกทิ้งเมื่อ container ถูกลบ · Volume เหมือนลิ้นชักถาวรที่ต่อเข้ากับ container ข้อมูลอยู่รอด · network เหมือนสายโทรศัพท์ให้ container คุยกัน
Volumes — เก็บข้อมูลถาวร
ข้อมูลอยู่รอดแม้ลบ container ด้วย volume
named volume (Docker จัดการ)
Container
pgdataเหมาะ DB/prod
bind mount (โฟลเดอร์ host)
Container
./siteเหมาะ dev
ไม่มี volume = ข้อมูลในตัว container หายเมื่อลบ
# named volume — Docker เก็บให้ (เหมาะข้อมูล production เช่น DB)
docker volume create pgdata
docker run -d -v pgdata:/var/lib/postgresql/data postgres
# bind mount — map โฟลเดอร์จากเครื่องเรา (เหมาะ dev แก้โค้ดแล้วเห็นทันที)
docker run -d -v $(pwd)/site:/usr/share/nginx/html nginx- named volume — Docker จัดการที่เก็บเอง ย้าย/สำรองง่าย เหมาะข้อมูลจริง (ฐานข้อมูล)
- bind mount — ผูกโฟลเดอร์จากเครื่อง host ตรง ๆ เหมาะตอน dev (แก้ไฟล์แล้ว container เห็นทันที)
- ไม่มี volume = ข้อมูลที่เขียนในตัว container หายเมื่อลบ container
Networking — พอร์ตและการคุยกัน
docker network create appnet # สร้าง network
docker run -d --name db --network appnet postgres
docker run -d --name api --network appnet myapi
# ภายใน appnet: container "api" เรียก "db" ด้วยชื่อ host "db" ได้เลยสรุป Key Takeaways
- ไม่มี volume = ข้อมูลหายเมื่อลบ container · named volume (จริง) vs bind mount (dev)
- -p host:container เปิดพอร์ตสู่ภายนอก · ไม่ใส่ = เข้าจากนอกไม่ได้
- container ใน network เดียวกันเรียกกันด้วยชื่อได้
- volume/network คือรากของ PV/PVC และ Service/DNS ใน K8s
อ่านจบแล้วอย่าลืมทำเครื่องหมาย

