Skip to Content

Docker Storage

What is Docker Storage?

Docker Storage คือ กลไกในการบริหารจัดการข้อมูล (Data) ของ Container ให้มีความยั่งยืน (Persistence) โดยปกติข้อมูลที่เกิดขึ้นภายใน Container จะมีสถานะเป็นข้อมูลชั่วคราว (Ephemeral) ซึ่งจะสูญหายทันทีเมื่อ Container ถูกลบ ดังนั้นในกรณีที่ต้องการเก็บรักษาข้อมูลสำคัญ เช่น ฐานข้อมูล (Database) หรือไฟล์บันทึกการทำงาน (Log files) จึงจำเป็นต้องใช้งาน Docker Storage เพื่อทำการ Map พื้นที่จัดเก็บข้อมูลออกมาไว้นอก Container

Docker Volumes

Docker Volumes เป็นวิธีการจัดเก็บข้อมูลที่มีมาตรฐานและมีความปลอดภัยสูง โดย Docker จะเป็นผู้บริหารจัดการพื้นที่จัดเก็บข้อมูลดังกล่าวโดยตรง (Managed by Docker) ภายใต้ Path /var/lib/docker/volumes/<volume-name>/_data บนเครื่อง Host วิธีการนี้ช่วยลดความซับซ้อนในการจัดการ Path ของเครื่อง Host และเอื้ออำนวยต่อการแชร์ข้อมูลระหว่าง Container หลายตัว

Volume Example

ตัวอย่างการสร้าง Volume ชื่อ my-data และนำไป Mount เข้ากับ Container (เช่น Nginx)

# docker volume create <vol_name> docker volume create my-data

เมื่อสร้างเสร็จแล้ว สามารถนำไปใช้งานกับ Container ได้ดังนี้

# docker run -v <volume_name>:<container_path> <image_name> docker run -d -v my-data:/app nginx

การตรวจสอบรายการ Volume ที่มีอยู่

docker volume ls

Bind Mounts

การเชื่อมโยงไฟล์หรือไดเรกทอรีจากตำแหน่งที่ระบุเจาะจงบนเครื่อง Host (Host Path) เข้ากับ Container โดยตรง วิธีการนี้มีความยืดหยุ่นสูงและเหมาะสมสำหรับการพัฒนาซอฟต์แวร์ (Development) เนื่องจากการแก้ไข Source Code บนเครื่อง Host จะส่งผลให้ข้อมูลภายใน Container เปลี่ยนแปลงตามทันที (Hot Reload)

Bind Mounts Example

สำหรับการใช้งานบนระบบปฏิบัติการ Windows แนะนำให้ระบุ Path เป็นแบบเต็ม (Absolute Path) และควรใช้เครื่องหมาย Forward Slash ( / ) แทน Backslash ( \ ) เพื่อป้องกันข้อผิดพลาดในการตีความคำสั่ง

# docker run -v <drive_letter>:/<path>:<container_path> <image_name> docker run -d -p 8080:80 -v D:/project/html:/usr/share/nginx/html nginx
Last updated on