2013-07-29 54 views
6

Một trong các ví dụ Docker là cho một container có Memcached được cấu hình. Tôi tự hỏi tại sao người ta muốn điều này so với một máy ảo được cấu hình với Memcached? Tôi đoán rằng nó sẽ không có ý nghĩa để có nhiều hơn một container container memcached chạy dưới cùng một máy chủ, và lợi thế thực sự duy nhất là lợi thế tốc độ của "quay lên" ngăn xếp memcached trong một container docker vs Memcached thông qua một máy ảo . Điều này có đúng không?Lợi ích của vùng chứa Docker đối với một cá thể được ghi nhớ là gì?

Ngoài ra, làm cách nào để đặt bộ nhớ được sử dụng bằng cách ghi nhớ trong vùng chứa docker? Làm thế nào điều này sẽ làm việc nếu có hai hoặc nhiều docker container với Memcached dưới một máy chủ? (Tôi giả định một lần nữa rằng hai hoặc nhiều hơn sẽ không có ý nghĩa).

Trả lời

2

Có vẻ như có hai câu hỏi ở đây ...

1 - Lợi ích như khi bạn mô tả. Bạn có thể sandbox thể hiện memcached (và cấu hình) vào các thùng chứa riêng biệt để bạn có thể chạy nhiều trên một máy chủ đã cho. Ngoài ra, việc di chuyển cá thể memcached đến một máy chủ khác là khá tầm thường và chỉ cần cập nhật cấu hình ứng dụng trong trường hợp xấu nhất.

2 - docker run -m <inbytes> <memcached-image> sẽ giới hạn dung lượng bộ nhớ mà vùng chứa được ghi nhớ có thể tiêu thụ. Bạn có thể chạy như nhiều trong số này như bạn muốn theo một máy chủ duy nhất.

0

Tôi có thể đang thiếu thứ gì đó ở đây, nhưng Memcaching chỉ nói điều gì đó về việc sử dụng bộ nhớ, đúng không? Docker container rất hiệu quả trong việc sử dụng không gian đĩa. Bạn không cần một hệ điều hành trên mọi máy ảo, nhưng bạn có thể chia sẻ tài nguyên. Hình ảnh tuyệt đẹp với hình ảnh trên docker.io website.

18

Tôi tự hỏi tại sao người ta muốn điều này so với máy ảo được cấu hình với Memcached?

An ninh: Nếu ai đó phá vỡ memcached và trojan hệ thống tập tin, nó không quan trọng - các hệ thống tập tin bị vứt bỏ khi bạn bắt đầu một memcached mới.

Cách ly: Bạn có thể giới hạn cứng mỗi vùng chứa để ngăn không cho nó sử dụng quá nhiều RAM.

Chuẩn hóa: Hiện tại, mỗi ứng dụng/cơ sở dữ liệu/bộ nhớ cache/cân bằng tải phải ghi lại những gì cần cài đặt, cấu hình và những gì để chạy. Không có tiêu chuẩn (và không thiếu các công cụ như con rối, đầu bếp, v.v.). Nhưng những công cụ này rất phức tạp, không thực sự là hệ điều hành độc lập (mặc dù tuyên bố của họ), và mang cùng sự phức tạp từ phát triển đến triển khai.

Với đế lót ly, mọi thứ chỉ là một vùng chứa bắt đầu bằng run BLAH. Nếu ứng dụng của bạn có 5 lớp, bạn chỉ có 5 vùng chứa để chạy, với một chút dàn nhạc ở trên cùng. Các nhà phát triển không bao giờ cần phải "nhìn vào container" trừ khi họ đang phát triển ở lớp đó.

Tài nguyên: Bạn có thể xoay 1000 container chứa trên máy tính thông thường, nhưng bạn sẽ gặp sự cố khi xoay vòng 100 máy ảo. Giới hạn là cả CPU và RAM. Docker container chỉ là các quá trình trong một chroot "tăng cường". Trên máy ảo, có hàng tá quy trình nền (cron, logrotation, syslog, v.v.), nhưng có no các quy trình bổ sung cho docker.

tôi đoán rằng nó sẽ làm cho không có ý nghĩa để có nhiều hơn một memcached chạy chứa Docker dưới cùng một máy chủ

Nó phụ thuộc. Có những trường hợp bạn muốn chia RAM của bạn thành bưu kiện thay vì trên toàn cầu. (ví dụ: hãy tưởng tượng nếu bạn muốn dành 20% bộ nhớ cache cho người dùng lưu vào bộ nhớ cache và 40% bộ nhớ cache của bạn vào bộ nhớ đệm, v.v.)

Ngoài ra, hầu hết các chương trình đều khó mở rộng, vì vậy mọi người thường bắt đầu với nhiều 'ảo' mảnh, sau đó mở rộng vào hộp vật lý khi cần thiết. Vì vậy, bạn có thể bắt đầu với ứng dụng của bạn biết khoảng 20 trường hợp memcached (được chọn dựa trên ID đối tượng). Lúc đầu, tất cả 20 chạy trên một máy chủ vật lý. Nhưng sau đó bạn chia chúng thành 2 máy chủ (10/10), sau đó lên 5 máy chủ (4/4/4/4) và cuối cùng là 20 máy chủ vật lý (1 memcached). Do đó, bạn có thể mở rộng ứng dụng 20x chỉ bằng cách di chuyển các máy ảo xung quanh và không thay đổi ứng dụng của mình.

lợi thế thực sự duy nhất là lợi thế về tốc độ "quay lên" ngăn xếp được ghi nhớ trong vùng chứa docker so với Memcached qua máy ảo. Điều này có đúng không?

Không, đó chỉ là một lợi ích nhỏ. xem ở trên.

Ngoài ra, cách đặt bộ nhớ được sử dụng bằng cách ghi nhớ trong vùng chứa docker?

Trong lệnh docker run, chỉ cần sử dụng -m.

Làm thế nào điều này sẽ hoạt động nếu có hai hoặc nhiều vùng chứa docker với Memcached dưới một máy chủ? (Tôi giả định một lần nữa rằng hai hoặc nhiều hơn sẽ không có ý nghĩa).

Tương tự. Nếu bạn không đặt giới hạn bộ nhớ, nó sẽ là chính xác như chạy 2 quy trình ghi nhớ trên máy chủ. (Nếu một bộ nhớ đầy, cả hai sẽ bị lỗi bộ nhớ.)

+0

Cảm ơn bạn rất nhiều vì những câu trả lời rõ ràng và chính xác cho câu hỏi của tôi! – bhartsb

Các vấn đề liên quan