Trang chủ Thủ Thuật Trình điều khiển lưu trữ Docker là gì và bạn nên sử...

Trình điều khiển lưu trữ Docker là gì và bạn nên sử dụng trình điều khiển nào?

0
18
Diagram showing how Docker writable layers work

Trình điều khiển lưu trữ Docker là gì và bạn nên sử dụng trình điều khiển nào?

6dc7b5a0

Trình điều khiển lưu trữ Docker kiểm soát cách hình ảnh và vùng chứa được lưu trữ trên hệ thống tệp của bạn. Chúng là cơ chế cho phép bạn tạo hình ảnh, khởi động vùng chứa và sửa đổi các lớp có thể ghi. Dưới đây là sự khác biệt giữa mỗi trình điều khiển và các tình huống nên sử dụng chúng.

Trình điều khiển lưu trữ để làm gì?

Trình điều khiển lưu trữ đang hoạt động xác định cách Docker quản lý hình ảnh và vùng chứa của bạn. Các trình điều khiển có sẵn thực hiện các chiến lược khác nhau để xử lý các lớp hình ảnh. Chúng sẽ có các đặc điểm hiệu suất độc đáo tùy thuộc vào tình huống lưu trữ hiện có.

Về bản chất, các trình điều khiển lưu trữ được liên kết với “lớp có thể ghi” của vùng chứa. Thuật ngữ này đề cập đến cấp cao nhất của hệ thống tệp của vùng chứa mà bạn có thể sửa đổi bằng cách chạy lệnh, ghi tệp và thêm phần mềm trong thời gian chạy.

Mặc dù dữ liệu vùng chứa Docker liên tục nên luôn được lưu trữ trong các ổ, nhưng các thay đổi đối với hệ thống tệp của chính vùng chứa thường không thể tránh khỏi. Bạn có thể đang ghi các tệp tạm thời, lưu trữ các biến môi trường vào tệp cấu hình hoặc dữ liệu vào bộ nhớ đệm để tham khảo sau này.

Tất cả các hoạt động này đều dẫn đến hệ thống tệp của vùng chứa đang chạy lệch khỏi hệ thống tệp được xác định bởi hình ảnh của nó. Sự lựa chọn trình điều khiển lưu trữ của bạn xử lý sự khác biệt và áp dụng sự khác biệt.

Điều gì sẽ xảy ra khi bạn bắt đầu một vùng chứa?

Khi một vùng chứa mới bắt đầu, Docker đầu tiên kéo các lớp hình ảnh được tạo bằng cách xây dựng Dockerfile của nó. Các lớp được lưu trữ trên máy chủ của bạn, do đó bạn không cần phải kéo lại hình ảnh cho đến khi bạn muốn tìm nạp các bản cập nhật. Là một phần của quá trình kéo, Docker sẽ xác định và sử dụng lại các lớp mà nó đã có, tránh tải xuống dư thừa.

Quảng cáo

Khi các lớp hình ảnh có sẵn, Docker sẽ khởi chạy vùng chứa và thêm một lớp bổ sung lên trên. Đây là lớp có thể ghi mà vùng chứa có thể sửa đổi. Tất cả các lớp thấp hơn là bất biến và bắt nguồn từ các định nghĩa Dockerfile của chúng.

Diagram showing how Docker writable layers work
Docker.com

Lớp có thể ghi hoạt động tốt với ít chi phí khi bạn chỉ cần thêm tệp vào hệ thống tệp của vùng chứa. Chúng kết thúc trong lớp có thể ghi, ở trên cùng của ngăn xếp. Mặc dù vậy, các sửa đổi đối với các tệp hiện có rắc rối hơn: chúng tồn tại ở các lớp chỉ đọc thấp hơn nhưng bây giờ cần được ghi vào.

Cách tiếp cận của Docker là “copy-on-write”, nghĩa là tệp được sao chép ra khỏi lớp gốc của nó và vào lớp có thể ghi tại điểm sửa đổi. Đây là hoạt động sử dụng nhiều I / O có thể dẫn đến giảm hiệu suất.

Các trình điều khiển lưu trữ khác nhau chịu trách nhiệm triển khai hỗ trợ sao chép-ghi. Mỗi trình điều khiển cung cấp sự cân bằng duy nhất giữa hiệu suất và hiệu quả sử dụng đĩa.

Trình điều khiển bộ nhớ có sẵn

Docker sử dụng kiến trúc trình điều khiển lưu trữ có thể cắm được và cung cấp một số tùy chọn theo mặc định. Trình điều khiển lưu trữ không ảnh hưởng đến các hình ảnh hoặc vùng chứa riêng lẻ – bạn có thể chạy bất kỳ hình ảnh Docker nào bất kể trình điều khiển đã chọn.

Quảng cáo

Trình điều khiển lưu trữ hoạt động là cài đặt cấp thời gian chạy được xác định trong tệp cấu hình của Docker daemon. Một số trình điều khiển lưu trữ yêu cầu cung cấp hệ thống tệp đặc biệt trước khi bạn có thể sử dụng chúng. Sau đó, bạn thêm trình điều khiển lưu trữ đã chọn của mình vào /etc/docker/daemon.json :

{
    "Storage-driver": "overlay2"
}

Bạn có thể kiểm tra trình điều khiển hiện tại của mình bằng cách chạy docker info | grep "Storage Driver" . Trên hầu hết các hệ thống hiện đại, nó sẽ mặc định là overlay2 .

9320b40c

Dưới đây là danh sách các tùy chọn mà bạn có thể chọn.

overlay2

Trình overlay2 hiện là trình điều khiển mặc định trên tất cả các bản phân phối Linux được hỗ trợ tích cực. Nó yêu cầu hệ thống tệp sao lưu ext4 hoặc xfs

overlay2 cung cấp sự cân bằng tốt giữa hiệu suất và hiệu quả cho các hoạt động sao chép-ghi. Khi cần sao chép-ghi, trình điều khiển tìm kiếm qua các lớp của hình ảnh để tìm tệp phù hợp, bắt đầu từ lớp trên cùng. Kết quả được lưu vào bộ nhớ đệm để đẩy nhanh quá trình vào lần sau.

Khi tệp được tìm thấy, nó được sao chép lên lớp có thể ghi của vùng chứa. Sau đó, bản sao được sửa đổi với các thay đổi do vùng chứa yêu cầu. Từ đây trở đi, vùng chứa chỉ thấy phiên bản mới được sao chép của tệp. Bản gốc ở lớp hình ảnh bên dưới trở nên mờ đục đối với vùng chứa.

Quảng cáo

overlay2 hoạt động ở cấp tệp trái ngược với cấp khối. Điều này nâng cao hiệu suất bằng cách tối đa hóa hiệu quả sử dụng bộ nhớ nhưng có thể dẫn đến các lớp có thể ghi lớn hơn khi nhiều thay đổi được thực hiện.

Các lựa chọn thay thế cho trình điều khiển này bao gồm aufs overlay cũ hơn. Cả hai điều này đều không được khuyến khích sử dụng trên các bản phân phối Linux hiện đại có hỗ trợ overlay2

btrfs và zfs

Hai trình điều khiển này hoạt động ở cấp khối và lý tưởng cho các hoạt động ghi nhiều. Mỗi chúng yêu cầu hệ thống tệp sao lưu tương ứng của chúng.

Việc sử dụng các trình điều khiển này dẫn đến thư mục /var/lib/docker docker của bạn được lưu trữ trên btrfs hoặc zfs . Mỗi lớp hình ảnh có một thư mục riêng trong thư mục subvolumes Dung lượng được phân bổ cho các thư mục theo yêu cầu khi cần thiết, giữ cho việc sử dụng đĩa ở mức thấp cho đến khi các hoạt động sao chép-ghi xảy ra.

Các lớp cơ sở hình ảnh được lưu trữ dưới dạng các tập tin con trên hệ thống tập tin. Các lớp khác trở thành ảnh chụp nhanh, chỉ chứa những điểm khác biệt mà chúng giới thiệu. Các sửa đổi lớp ghi được xử lý ở cấp khối, thêm một ảnh chụp nhanh tiết kiệm không gian khác.

Bạn có thể tạo ảnh chụp nhanh của các nguồn phụ và ảnh chụp nhanh khác bất kỳ lúc nào. Những ảnh chụp nhanh này tiếp tục chia sẻ dữ liệu không thay đổi, giảm thiểu mức tiêu thụ bộ nhớ tổng thể.

Quảng cáo

Sử dụng một trong những trình điều khiển này, bạn có thể mang lại trải nghiệm tốt hơn cho các vùng chứa nhiều ghi nhiều. Nếu bạn đang ghi nhiều tệp tạm thời hoặc lưu vào bộ đệm nhiều hoạt động trên đĩa, btrfs hoặc zfs có thể thực hiện overlay2 . Cái bạn nên sử dụng phụ thuộc vào hệ thống tệp sao lưu của bạn – nói chung zfs được ưu tiên như một giải pháp thay thế hiện đại hơn cho btrfs .

fuse-overlayfs

Trình điều khiển lưu trữ này cung cấp cách chạy Docker ở chế độ rootless trên máy thiếu hỗ trợ trình điều khiển overlay2 Tuy nhiên, vì tất cả các bản phân phối Linux được nhắm mục tiêu hiện nay đều hoạt động với overlay2 nên fuse-overlayfs không còn cần thiết hoặc được khuyến nghị nữa.

Trình điều khiển này hoạt động bằng cách triển khai hệ thống tệp lớp phủ sử dụng FUSE. Là một hệ thống tệp không gian người dùng, nó hoạt động ở chế độ không cần root nhưng phải chịu các hình phạt về hiệu suất so với hệ thống lưu trữ cấp hạt nhân.

vfs

Trình vfs được bao gồm cho mục đích thử nghiệm và không được sử dụng trong sản xuất. Hiệu suất của trình điều khiển này được ghi nhận là kém.

vfs có thể hữu ích trong một số trường hợp đặc biệt vì nó không sử dụng tính năng copy-on-write. Thay vào đó, mỗi lớp có thư mục trên đĩa của riêng mình. Khi một tệp cần di chuyển giữa các lớp, nó chỉ cần sao chép vào một thư mục mới.

Quảng cáo

Do đó, vfs hoạt động với tất cả các hệ thống tệp và được hưởng lợi từ sự đơn giản và dễ kiểm tra. Nó gặp phải tình trạng sử dụng nhiều I / O và dễ gây ra việc sử dụng đĩa cao vì mỗi lần sửa đổi tệp sẽ kích hoạt một bản sao đầy đủ từ lớp nguồn.

người quản lý thiết bị

Đây từng là trình điều khiển được khuyến nghị cho CentOS và RHEL nhưng nó đã mất vị trí cho overlay2 trong các bản phát hành hạt nhân gần đây hơn. Trình điều khiển này yêu cầu hệ thống tệp sao lưu direct-lvm devicemapper sẽ không còn được sử dụng nữa – nó không được dùng nữa và sẽ bị xóa hoàn toàn trong tương lai.

Tóm lược

Trình điều khiển lưu trữ của Docker được sử dụng để quản lý các lớp hình ảnh và phần có thể ghi của hệ thống tệp của vùng chứa. Mặc dù các thay đổi đối với hệ thống tệp vùng chứa bị mất khi vùng chứa dừng, chúng vẫn cần được duy trì trong khi vùng chứa đang chạy. Đó là trình điều khiển lưu trữ cung cấp cơ chế này.

Mỗi trình điều khiển sở hữu một tập hợp các tối ưu hóa khác nhau để ít nhiều phù hợp với các tình huống khác nhau. Ngày nay overlay2 là trình điều khiển mặc định và là tùy chọn được đề xuất cho hầu hết các khối lượng công việc, mặc dù các tùy chọn thay thế như btrfs , zfsfuse-overlayfs có một số tính năng nâng cao hơn và có thể được yêu cầu trong một số trường hợp nhất định.

How Docker Image Signing Will Evolve With Notary v2

Docker Image Signing sẽ phát triển như thế nào với Notary v2

DKIM, DMARC, and SPF: Setting Up Email Security

DKIM, DMARC và SPF: Thiết lập bảo mật email

47891d3f 1

Deno là gì và nó khác với Node.js như thế nào?

Using Kubernetes Annotations, Labels, and Selectors

Sử dụng Kubernetes Chú thích, Nhãn và Bộ chọn

How to Transfer a Github Repository to Your Organization (or Another User)

Cách chuyển Kho lưu trữ Github cho Tổ chức của bạn (hoặc Người dùng khác)

How to Security Scan Docker Images With Anchore

Cách bảo mật quét hình ảnh Docker bằng Anchore

Dịch từ: https://www.cloudsavvyit.com/14578/what-are-docker-storage-drivers-and-which-should-you-use/

Hãy giúp chúng tôi đánh giá bài viết này!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây