Giới thiệu
Trong các tập trước, chúng ta đã tìm hiểu về Docker Compose, Networking và Swarm. Hôm nay, chúng ta sẽ khám phá một trong những khía cạnh quan trọng nhất của ứng dụng container hóa: tính bền vững của dữ liệu.
Tại Sao Lưu Trữ Bền Vững Quan Trọng
Mặc định, các container Docker là tạm thời:
- Bất kỳ dữ liệu nào được lưu trữ trong một container sẽ bị mất khi container bị xóa.
- Để bảo tồn dữ liệu qua các lần khởi động lại hoặc nâng cấp container, chúng ta cần sử dụng volumes hoặc bind mounts.
Các Loại Lưu Trữ Trong Docker
1. Volumes
- Được quản lý bởi Docker.
- Được lưu trữ tại
/var/lib/docker/volumes/trên máy chủ. - Có thể được chia sẻ giữa các container.
- Thích hợp cho cơ sở dữ liệu và dữ liệu ứng dụng bền vững.
2. Bind Mounts
- Sử dụng một thư mục từ máy chủ.
- Cung cấp quyền kiểm soát hoàn toàn đối với tệp.
- Hữu ích cho môi trường phát triển.
3. Tmpfs Mounts
- Chỉ được lưu trữ trong bộ nhớ.
- Tuyệt vời cho việc lưu trữ tạm thời hoặc caching.
Tạo và Sử Dụng Volumes
bash
# Tạo một volume
docker volume create my_data
# Chạy một container sử dụng volume
docker run -d -v my_data:/app/data my_app
my_datasẽ vẫn tồn tại ngay cả khimy_appbị xóa.
Ví Dụ Về Bind Mount
bash
docker run -d -v /host/path:/container/path my_app
- Những thay đổi trên đường dẫn host sẽ ngay lập tức được phản ánh bên trong container.
Sử Dụng Volumes Trong Docker Compose
yaml
version: '3'
services:
db:
image: postgres:latest
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
- Dữ liệu sẽ tồn tại qua các lần khởi động lại container và khi sử dụng
docker-compose down.
Thực Hành Tốt Nhất
- Sử dụng named volumes cho dữ liệu sản xuất.
- Sao lưu các volumes thường xuyên.
- Tránh lưu trữ thông tin nhạy cảm trực tiếp trong volumes; hãy sử dụng secrets thay vào đó.
- Sử dụng read-only mounts khi cần thiết để tăng tính bảo mật.
Thách Thức Thực Tế
- Tạo một container PostgreSQL với một named volume.
- Chèn một số dữ liệu.
- Dừng và xóa container.
- Chạy một container mới gắn vào cùng một volume và xác minh rằng dữ liệu vẫn tồn tại.
Các Vấn Đề Thường Gặp
- Vấn đề mất dữ liệu: Hãy chắc chắn rằng bạn đã sử dụng volumes đúng cách để tránh mất dữ liệu không mong muốn.
- Quyền truy cập: Kiểm tra quyền truy cập của các container để đảm bảo chúng có thể truy cập vào volume cần thiết.
Mẹo Tối Ưu Hiệu Suất
- Sử dụng volumes trên ổ cứng SSD để tăng tốc độ truy cập dữ liệu.
- Phân chia dữ liệu thành nhiều volumes nhỏ để dễ quản lý và tối ưu hóa hiệu suất.
Kết Luận
Việc quản lý lưu trữ trong Docker thông qua volumes và bind mounts là một kỹ năng quan trọng cho các nhà phát triển. Hãy đảm bảo bạn hiểu rõ các khái niệm này và áp dụng chúng trong các dự án thực tế của mình.
**Hãy chuẩn bị cho tập tiếp theo: Tập 20 — Thực Hành Bảo Mật Docker & Quản Lý Secrets!