1.1 Volumes (Tập tin lưu trữ)
Lưu trữ dữ liệu trong Docker là một phần quan trọng trong làm việc với containers. Containers tự chúng là ephemeral, nghĩa là dữ liệu bên trong chúng sẽ bị mất sau khi dừng hoặc xoá containers. Để giữ dữ liệu giữa các lần chạy và đảm bảo lưu trữ dài hạn, Docker cung cấp hai công nghệ chính: volumes và bind mounts (thư mục liên kết).
Volumes
Volumes là các tài nguyên được Docker quản lý để lưu dữ liệu. Chúng tồn tại độc lập với vòng đời của containers, điều này cho phép sử dụng chúng để lưu trữ dữ liệu dài hạn. Volumes có thể được tạo và quản lý bởi Docker, cung cấp một cách thuận tiện để lưu dữ liệu ngoài containers.
Lợi ích của việc sử dụng volumes
- Tách biệt với host: Volumes được lưu trữ trong thư mục đặc biệt trên host được Docker quản lý, điều này đảm bảo sự tách biệt của chúng.
- Dễ dàng quản lý: Docker cung cấp các lệnh tiện lợi để tạo, xoá và quản lý volumes.
- Tương thích và di chuyển dễ dàng: Volumes có thể dễ dàng di chuyển giữa các hosts khác nhau và sử dụng với các containers khác nhau.
Ví dụ về tạo và sử dụng volumes
Tạo volumes:
docker volume create my_volume
Sử dụng volume trong container:
Trong ví dụ này, volume my_volume
được mount vào thư mục /data
bên trong container my_container
.
docker run -d --name my_container -v my_volume:/data nginx
1.2 Thư mục gắn kết (Bind Mounts)
Thư mục gắn kết cho phép mount các thư mục xác định từ máy chủ vào container. Điều này giúp container sử dụng file và thư mục nằm trên máy chủ, cực kỳ hữu ích cho việc phát triển và kiểm thử khi cần làm việc với các file cục bộ.
Lợi ích của việc sử dụng thư mục gắn kết:
- Truy cập trực tiếp vào file trên máy chủ: container có thể trực tiếp sử dụng file và thư mục nằm trên máy chủ.
- Thuận tiện cho phát triển: các lập trình viên có thể dễ dàng thay đổi file trên máy chủ và thấy các thay đổi đó trong container ngay lập tức.
- Linh hoạt: thư mục gắn kết có thể là bất kỳ thư mục nào trên máy chủ, mang lại sự linh hoạt lớn trong việc quản lý dữ liệu.
Ví dụ sử dụng thư mục gắn kết
Chạy container với thư mục gắn kết:
docker run -d --name my_container -v /path/on/host:/data nginx
Trong ví dụ này, thư mục /path/on/host
trên máy chủ được mount vào thư mục /data
bên trong container my_container
.
So sánh Volume và thư mục gắn kết:
Đặc điểm | Volumes | Thư mục gắn kết |
---|---|---|
Lưu trữ dữ liệu | Quản lý bởi Docker | Quản lý bởi người dùng |
Cách ly | Cách ly khỏi hệ thống file máy chủ | Sử dụng hệ thống file của máy chủ |
Hiệu suất | Tối ưu hóa cho Docker | Phụ thuộc vào hệ thống file của máy chủ |
Ứng dụng | Lưu trữ dữ liệu dài hạn | Phát triển và kiểm thử |
1.3 Ví dụ thực tế
Ví dụ thực tế về cách sử dụng
Ví dụ 1: Sử dụng volumes cho cơ sở dữ liệu
Để đảm bảo lưu trữ dữ liệu cơ sở dữ liệu lâu dài, có thể sử dụng volumes.
Tạo volume:
docker volume create db_data
Chạy container cơ sở dữ liệu với volume:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
Ví dụ 2: Sử dụng thư mục bind mount cho phát triển web
Để phát triển ứng dụng web, có thể sử dụng thư mục bind mount để các thay đổi trong tệp cục bộ được phản ánh ngay trong container.
Chạy container với thư mục bind mount:
docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx
Trong ví dụ này, thư mục làm việc hiện tại my_website
được gắn vào thư mục /usr/share/nginx/html
của container nginx
.
GO TO FULL VERSION