Học Docker, phần 6: làm việc với dữ liệu

Trong phần dịch loạt tài liệu về Docker hôm nay, chúng ta sẽ nói về cách làm việc với dữ liệu. Đặc biệt, về khối lượng Docker. Trong các tài liệu này, chúng tôi liên tục so sánh các công cụ phần mềm Docker với các công cụ tương tự có thể ăn được khác nhau. Chúng ta cũng đừng đi chệch khỏi truyền thống này ở đây. Hãy để dữ liệu trong Docker trở thành gia vị. Trên thế giới có rất nhiều loại gia vị và trong Docker có nhiều cách để làm việc với dữ liệu.

Phần 1: Khái niệm cơ bản
Phần 2: Thuật ngữ và khái niệm
Phần 3: Dockerfiles
Phần 4: Giảm kích thước hình ảnh và tăng tốc độ xây dựng của chúng
Phần 5: lệnh
Phần 6: làm việc với dữ liệu

Học Docker, phần 6: làm việc với dữ liệu

Xin lưu ý rằng tài liệu này được chuẩn bị bằng công cụ Docker phiên bản 18.09.1 ​​​​và phiên bản API 1.39.

Dữ liệu trong Docker có thể được lưu trữ tạm thời hoặc vĩnh viễn. Hãy bắt đầu với dữ liệu thời gian.

Lưu trữ dữ liệu tạm thời

Trong vùng chứa Docker, bạn có thể sắp xếp công việc với dữ liệu tạm thời theo hai cách.

Theo mặc định, các tệp được tạo bởi ứng dụng đang chạy trong vùng chứa sẽ được lưu trữ trong lớp có thể ghi của vùng chứa. Để cơ chế này hoạt động, không cần phải cấu hình gì đặc biệt. Hóa ra rẻ và vui vẻ. Ứng dụng chỉ cần lưu dữ liệu và tiếp tục thực hiện công việc riêng của mình. Tuy nhiên, sau khi container không còn tồn tại, dữ liệu được lưu theo cách đơn giản này cũng sẽ biến mất.

Có một giải pháp khác để lưu trữ các tệp tạm thời trong Docker, phù hợp với những trường hợp bạn cần mức hiệu suất cao hơn so với mức có thể đạt được bằng cơ chế lưu trữ tạm thời tiêu chuẩn. Nếu bạn không cần dữ liệu của mình được lưu trữ lâu hơn vùng chứa tồn tại, bạn có thể kết nối tmpfs với vùng chứa - nơi lưu trữ thông tin tạm thời sử dụng RAM của máy chủ. Điều này sẽ tăng tốc độ hoạt động ghi và đọc dữ liệu.

Điều thường xảy ra là dữ liệu cần được lưu trữ ngay cả sau khi vùng chứa không còn tồn tại. Với mục đích này, chúng ta sẽ cần các cơ chế lưu trữ dữ liệu liên tục.

Lưu trữ dữ liệu vĩnh viễn

Có hai cách để làm cho thời gian tồn tại của dữ liệu dài hơn thời gian tồn tại của vùng chứa. Một cách là sử dụng công nghệ gắn kết. Với phương pháp này, chẳng hạn, bạn có thể gắn một thư mục thực tế vào vùng chứa. Các quy trình nằm bên ngoài Docker cũng sẽ có thể hoạt động với dữ liệu được lưu trữ trong một thư mục như vậy. Đây là cách nhìn công nghệ gắn kết và gắn kết tmpfs.

Học Docker, phần 6: làm việc với dữ liệu
Gắn kết tmpfs và liên kết gắn kết

Nhược điểm của việc sử dụng công nghệ gắn kết liên kết là việc sử dụng nó làm phức tạp việc sao lưu dữ liệu, di chuyển dữ liệu và chia sẻ dữ liệu giữa nhiều vùng chứa. Sẽ tốt hơn nhiều nếu sử dụng khối lượng Docker để lưu trữ dữ liệu liên tục.

Khối lượng Docker

Ổ đĩa là một hệ thống tệp nằm trên máy chủ bên ngoài vùng chứa. Docker tạo và quản lý khối lượng. Dưới đây là các thuộc tính chính của khối Docker:

  • Chúng là một phương tiện để lưu trữ thông tin vĩnh viễn.
  • Chúng độc lập và tách biệt khỏi các thùng chứa.
  • Chúng có thể được chia sẻ giữa các container khác nhau.
  • Chúng cho phép bạn tổ chức việc đọc và ghi dữ liệu hiệu quả.
  • Các tập có thể được lưu trữ trên tài nguyên của nhà cung cấp đám mây từ xa.
  • Chúng có thể được mã hóa.
  • Họ có thể được đặt tên.
  • Vùng chứa có thể sắp xếp trước để ổ đĩa được điền dữ liệu.
  • Chúng thuận tiện cho việc thử nghiệm.

Như bạn có thể thấy, khối lượng Docker có một số đặc tính tuyệt vời. Hãy nói về cách tạo ra chúng.

Tạo tập

Các tập có thể được tạo bằng Docker hoặc sử dụng các yêu cầu API.

Đây là hướng dẫn Dockerfile cho phép bạn tạo một ổ đĩa khi vùng chứa khởi động.

VOLUME /my_volume

Khi sử dụng một lệnh như thế này, Docker, sau khi tạo vùng chứa, sẽ tạo một ổ đĩa chứa dữ liệu đã tồn tại ở vị trí được chỉ định. Xin lưu ý rằng nếu bạn tạo một ổ đĩa bằng Dockerfile, điều này không giúp bạn giảm bớt nhu cầu chỉ định điểm gắn kết cho ổ đĩa.

Bạn cũng có thể tạo các tập trong Dockerfile bằng định dạng JSON.

Ngoài ra, các tập có thể được tạo bằng dòng lệnh trong khi vùng chứa đang chạy.

Làm việc với khối lượng từ dòng lệnh

▍Tạo một tập

Bạn có thể tạo một ổ đĩa độc lập bằng lệnh sau:

docker volume create —-name my_volume

▍Tìm hiểu thông tin về khối lượng

Để xem danh sách các khối Docker, hãy sử dụng lệnh sau:

docker volume ls

Bạn có thể khám phá một tập cụ thể như thế này:

docker volume inspect my_volume

▍Xóa một tập

Bạn có thể xóa một tập như thế này:

docker volume rm my_volume

Để xóa tất cả các ổ đĩa không được vùng chứa sử dụng, bạn có thể sử dụng lệnh sau:

docker volume prune

Trước khi xóa các ổ đĩa, Docker sẽ yêu cầu bạn xác nhận thao tác này.

Nếu một ổ đĩa được liên kết với một vùng chứa thì ổ đĩa đó không thể bị xóa cho đến khi vùng chứa tương ứng bị xóa. Đồng thời, ngay cả khi container bị xóa, Docker không phải lúc nào cũng hiểu được điều này. Nếu điều này xảy ra, bạn có thể sử dụng lệnh sau:

docker system prune

Nó được thiết kế để dọn sạch tài nguyên Docker. Sau khi chạy lệnh này, bạn sẽ có thể xóa các tập có trạng thái được xác định trước đó không chính xác.

--mount và --volume cờ

Để làm việc với khối lượng bạn, khi gọi lệnh docker, bạn sẽ thường xuyên phải sử dụng cờ. Ví dụ: để tạo một ổ đĩa trong quá trình tạo vùng chứa, bạn có thể sử dụng cấu trúc sau:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

Vào thời cổ đại (cho đến năm 2017), cờ được phổ biến --volume. Ban đầu, lá cờ này (nó cũng có thể được sử dụng ở dạng viết tắt, sau đó nó trông giống như -v) được sử dụng cho các thùng chứa độc lập và cờ --mount - trong môi trường Docker Swarm. Tuy nhiên, kể từ Docker 17.06, cờ --mount có thể được sử dụng trong mọi tình huống.

Cần lưu ý rằng khi sử dụng cờ --mount lượng dữ liệu bổ sung phải được chỉ định trong lệnh sẽ tăng lên, nhưng vì một số lý do, tốt hơn nên sử dụng cờ này thay vì --volume. Lá cờ --mount - Đây là cơ chế duy nhất cho phép bạn làm việc với các dịch vụ hoặc chỉ định các thông số của trình điều khiển âm lượng. Ngoài ra, cờ này dễ làm việc hơn.

Trong các ví dụ hiện có về các lệnh nhằm làm việc với dữ liệu trong Docker, bạn có thể tìm thấy nhiều ví dụ về cách sử dụng cờ -v. Khi cố gắng điều chỉnh các lệnh này cho phù hợp với chính mình, hãy nhớ rằng các cờ --mount и --volume sử dụng các định dạng tham số khác nhau. Nghĩa là, bạn không thể đơn giản thay thế -v trên --mount và có được một đội ngũ làm việc.

Sự khác biệt chính giữa --mount и --volume đó là khi sử dụng cờ --volume tất cả các tham số được thu thập cùng nhau trong một trường và khi được sử dụng --mount các tham số được tách ra.

Khi làm việc với --mount các tham số được biểu diễn dưới dạng cặp khóa-giá trị, cụ thể là, có vẻ như key=value. Các cặp này được phân tách bằng dấu phẩy. Dưới đây là các tùy chọn thường được sử dụng --mount:

  • type - Kiểu lắp. Giá trị của khóa tương ứng có thể là ràng buộc, khối lượng hoặc tmpfs. Ở đây chúng ta đang nói về khối lượng, nghĩa là chúng ta quan tâm đến ý nghĩa volume.
  • source - gắn nguồn. Đối với các tập được đặt tên, đây là tên tập. Đối với các tập đĩa chưa được đặt tên, khóa này không được chỉ định. Nó có thể được rút ngắn thành src.
  • destination — đường dẫn đến tệp hoặc thư mục được gắn vào vùng chứa. Khóa này có thể được rút ngắn thành dst hoặc target.
  • readonly - gắn âm lượng dự định chỉ để đọc. Khóa này là tùy chọn và không có giá trị được gán cho nó.

Đây là một ví dụ về việc sử dụng --mount với nhiều thông số:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Kết quả

Dưới đây là một số lệnh hữu ích bạn có thể sử dụng khi làm việc với khối Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Dưới đây là danh sách các tham số thường được sử dụng cho --mount, áp dụng trong một lệnh có dạng docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Bây giờ chúng ta đã kết thúc loạt bài Docker này, đã đến lúc nói vài lời về nơi mà những người học Docker có thể đi tiếp theo. Đây bài viết hay về Docker. Đây một cuốn sách về Docker (khi mua cuốn sách này, hãy cố gắng lấy phiên bản mới nhất). Đây Một cuốn sách khác phù hợp với những ai tin rằng thực hành là cách tốt nhất để học công nghệ.

Gởi bạn đọc! Bạn muốn giới thiệu những tài liệu nào về Docker cho người mới bắt đầu học?

Học Docker, phần 6: làm việc với dữ liệu

Nguồn: www.habr.com

Thêm một lời nhận xét