Site icon CloudCraft

[Nhập môn Docker] Phần 2: Giới thiệu các kiểu lưu trữ dữ liệu trên Docker

Hiện nay có nhiều cách để lưu trữ dữ liệu trên container. Một trong những cách đơn giản nhất là lưu trữ dữ liệu trực tiếp lên container (container layer – mình sẽ nói kỹ hơn về phần này trong những bài sau). Tuy nhiên, cách lưu trữ trực tiếp này có rất nhiều khuyết điểm như:

Ta có 3 cách để lưu trữ dữ liệu của Docker container là: volume, bind mount và tmpfs volume. Mặc định thì volume thường là lựa chọn tốt nhất.

Hình minh hoạt 3 cách mount dữ liệu trên container.

Chi tiết 3 kiểu lưu trữ dữ liệu này:

Docker Storage

Thông tin chi tiết về các loại mount:

Volume

Được khởi tạo và quản lý bởi Docker. Ta có thể khởi tạo một volume bằng cách sử dụng lệnh docker volume create hoặc tạo volume khi khởi tạo container/service.

Khi ta khởi tạo một volume, volume này sẽ nằm trong một thư mục trên Docker host. Khi ta mount volume này lên container tức là ta mount thư mục đó lên container. Cách thức hoạt động của volume tương tự như bind mount, ngoại trừ việc volume được quản lý bởi Docker và được phân tách (isolate) khỏi máy host.

Dữ liệu trong volume được lưu trữ bên ngoài các container, lưu trên Docker host

Một volume có thể được mount lên nhiều container cùng một lúc. Khi không có container nào sử dụng volume đó, volume này vẫn tồn tại và được quản lý bởi Docker mà không bị xóa đi như container layer. Ta có thể xóa các volume không sử dụng bằng cách dùng lệnh docker volume prune.

Ta có thể đặt tên cho một volume, nếu ta không đặt tên thì Docker sẽ tự động đặt tên cho volume đó và tên này là duy nhất trên một Docker host.

Volume trên Docker hỗ trợ dùng nhiều loại volume drivers, cho phép lưu trữ dữ liệu trên remote host hoặc trên hạ tầng lưu trữ của các nhà cung cấp dịch vụ cloud.

Bind mounts

Có từ thời xửa thời xưa khi Docker mới ra đời. So với volume thì bind mount có ít chức năng hơn. Khi ta dùng bind mount, ta có thể mount 1 file hoặc một thư mục lên container. File hoặc thư mục này được truy cập theo đường dẫn tuyệt đối trên máy host. Bind mount có hiệu năng truy xuất rất cao, nhưng phụ thuộc vào file system của máy host.

Chú ý: khi dùng bind mount, các process trong container có thể thay đổi filesystem của máy host (tạo file, thêm xóa sửa các dữ liệu hoặc thư mục quan trọng của hệ thống). Tính năng này tuy mạnh nhưng có thể tạo ra nhiều nguy cơ về bảo mật, gây ảnh hưởng tới các process khác trên máy host.

tmpfs mounts

tmpfs mount không được lưu trên đĩa cứng. tmpfs mount thường được dùng để lưu dữ liệu khi container đang chạy (dữ liệu này không cần được lưu trữ lâu dài).

Khi nào nên dùng volume

Volume là cách thường được dùng khi cần lưu trữ dữ liệu lâu dài trong container và services. Một số ứng dụng của volumes gồm:

Khi nào nên dùng bind mount

Bind mount thích hợp trong những trường hợp sau:

Khi nào nên dùng tmpfs mount

tmpfs mount được dùng khi ta không muốn lưu dữ liệu lâu dài trên cả máy host hoặc trong container vì lý do an ninh. Hoặc do ta muốn đảm bảo hiệu năng của container khi cần xử lý một lượng lớn dữ liệu tạm thời.

Một số chú ý khi dùng bind mount hoặc volume

Khi dùng bind mount hoặc volume thì cần chú ý những điều sau:

Bài viết này chỉ tập trung vào việc giới thiệu 3 loại lưu trữ dữ liệu trên Docker. Chi tiết các câu lệnh cho từng phần thì các bạn có thể xem tại đây, trên GitHub của mình.

Tham khảo

https://docs.docker.com/storage/volumes/

http://training.play-with-docker.com/docker-volumes/

Rate this post
Exit mobile version