Trả lời nhanh: Container dùng chung nhân với máy chủ nên khởi động trong vài giây và tốn rất ít RAM, nhưng chỉ chạy được Linux và mức cách ly thấp hơn máy ảo. Dùng cho các dịch vụ Linux nội bộ chạy nhiều bản. Dùng máy ảo khi cần Windows, cần cách ly chắc, hoặc chạy mã không tin cậy.
Proxmox cho bạn hai lựa chọn ngay trong cùng một giao diện, và nhiều người mặc định chọn máy ảo cho mọi thứ vì quen. Với các dịch vụ Linux nội bộ, container tiết kiệm tài nguyên tới mức bạn chạy được gấp nhiều lần số dịch vụ trên cùng phần cứng.
Khác biệt cốt lõi
Máy ảo giả lập một máy tính hoàn chỉnh với phần cứng ảo và nhân hệ điều hành riêng. Bên trong nó chạy một hệ điều hành đầy đủ, hoàn toàn không biết mình là máy ảo.
Container không giả lập phần cứng. Nó chỉ là một tập tiến trình chạy trên chính nhân của máy chủ, nhưng bị cách ly để chỉ thấy phần hệ thống file, phần mạng và phần tiến trình dành riêng cho nó.
Hệ quả về tài nguyên rất lớn. Một máy ảo Linux tối giản cần vài trăm megabyte RAM chỉ để chạy nhân và các tiến trình nền. Một container chạy cùng dịch vụ chỉ tốn phần RAM mà chính dịch vụ đó dùng.
Trên một máy chủ, con số này quy ra khả năng chạy gấp nhiều lần số dịch vụ nếu dùng container thay vì máy ảo.
Ưu điểm thực tế của container
- Khởi động trong vài giây thay vì vài chục giây tới vài phút. Rất tiện khi dựng đi dựng lại.
- Tốn ít RAM và ít đĩa. Một container cơ bản chỉ vài trăm megabyte đĩa.
- Tăng giảm tài nguyên khi đang chạy. Thêm RAM hoặc thêm lõi cho container mà không cần khởi động lại, điều mà máy ảo thường không làm được.
- Mẫu dựng sẵn. Proxmox có sẵn danh sách mẫu cho các bản Linux phổ biến, tải về rồi tạo container trong vài giây.
- Sao lưu nhanh và nhỏ vì không có nhân và không có phần cứng ảo.
Giới hạn cần biết
- Chỉ chạy được Linux. Không có Windows, không có các hệ điều hành khác. Đây là giới hạn cứng.
- Dùng chung nhân với máy chủ. Nghĩa là không chạy được thứ cần mô đun nhân riêng, không chạy được nhân phiên bản khác, và một số phần mềm mạng cấp thấp không hoạt động.
- Mức cách ly thấp hơn. Lỗ hổng ở tầng nhân có thể cho phép thoát khỏi container dễ hơn so với thoát khỏi máy ảo.
- Chạy container trong container hoặc chạy công cụ container hiện đại bên trong cần cấu hình đặc quyền, và điều đó làm giảm mức cách ly thêm nữa.
- Không chuyển được khi đang chạy giữa các máy chủ trong cụm, phải tắt rồi chuyển.
Chọn loại nào cho dịch vụ nào
Dùng container cho:
- Máy chủ web nhỏ và các trang nội bộ.
- Máy chủ tên miền nội bộ, máy chủ cấp phát địa chỉ.
- Kho mã nguồn, công cụ theo dõi công việc, các công cụ nội bộ khác.
- Máy chủ giám sát và thu thập nhật ký.
- Môi trường phát triển và kiểm thử cho từng lập trình viên.
Dùng máy ảo cho:
- Mọi thứ chạy Windows.
- Cơ sở dữ liệu quan trọng, nơi bạn muốn ranh giới cứng.
- Bất cứ thứ gì chạy mã của bên ngoài hoặc mở cho người lạ dùng.
- Máy chủ tường lửa và các thiết bị ảo chuyên dụng cần nhân riêng.
- Hệ thống cần chuyển giữa các máy chủ khi đang chạy.
Đặc quyền và bảo mật
Proxmox phân biệt hai kiểu container, và lựa chọn này ảnh hưởng trực tiếp tới an toàn.
Container không đặc quyền. Tài khoản quản trị bên trong container được ánh xạ thành một tài khoản thường ở máy chủ. Nghĩa là kể cả chiếm được quyền cao nhất bên trong, kẻ tấn công vẫn chỉ là người dùng thường ở máy chủ. Đây là mặc định và là lựa chọn nên dùng.
Container có đặc quyền. Tài khoản quản trị bên trong tương ứng với quản trị viên thật ở máy chủ. Cần cho một số trường hợp đặc thù nhưng làm mất phần lớn ranh giới an toàn. Chỉ dùng khi thực sự cần và khi bạn kiểm soát hoàn toàn nội dung bên trong.
Ba việc nên làm với mọi container: chạy ở chế độ không đặc quyền, đặt giới hạn tài nguyên để một container không ăn hết máy, và cập nhật đều đặn như với máy ảo.
Bảng ghép dịch vụ với máy ảo hay vùng chứa
| Dịch vụ | Nên dùng | Lý do |
|---|---|---|
| Máy chủ web, máy chủ ứng dụng nhẹ | Vùng chứa | Khởi động nhanh, tốn ít tài nguyên, đủ mức cách ly |
| Máy chủ tệp nội bộ, dịch vụ mạng nhỏ | Vùng chứa | Cùng lý do trên |
| Hệ điều hành khác với hệ điều hành của máy chủ | Máy ảo | Vùng chứa dùng chung nhân với máy chủ nên không làm được việc này |
| Dịch vụ cần gắn thiết bị phần cứng trực tiếp | Máy ảo | Chuyển tiếp thiết bị hoạt động đúng và ổn định hơn |
| Dịch vụ của bên thứ ba mà bạn không kiểm soát mã nguồn | Máy ảo | Mức cách ly cao hơn, an toàn hơn khi có vấn đề bảo mật |
| Máy chạy thử nghiệm cần chụp và quay lui liên tục | Cả hai đều được | Chọn theo thói quen của đội |
Giới hạn cần biết trước khi chọn vùng chứa
- Dùng chung nhân với máy chủ. Nghĩa là không chạy được hệ điều hành khác, và một lỗi ở tầng nhân ảnh hưởng tới mọi vùng chứa trên máy đó.
- Vài dịch vụ cần quyền sâu vào hệ thống chạy không đúng hoặc cần cấu hình đặc biệt. Kiểm tra trước với dịch vụ cụ thể của bạn.
- Mức cách ly thấp hơn máy ảo. Với dịch vụ mở ra internet hoặc phần mềm bạn không kiểm soát, máy ảo là lựa chọn thận trọng hơn.
Hai chế độ đặc quyền và lúc dùng từng cái
# Vung chua co hai che do: co dac quyen va khong dac quyen. # Che do KHONG dac quyen la mac dinh nen dung:# Tai khoan quan tri ben trong vung chua duoc anh xa thanh# mot tai khoan thuong o may chu. Neu ai do chiem duoc quyen# ben trong, ho van chi la nguoi dung thuong o may chu. # Che do CO dac quyen chi dung khi that su bat buoc:# vai dich vu can gan thiet bi hoac can quyen sau vao he thong.# Trong che do nay, chiem duoc quyen ben trong gan nhu# chiem duoc quyen tren may chu. # Nguyen tac: mac dinh la khong dac quyen.# Chi doi sang co dac quyen khi da thu va that su khong chay duoc,# va khi do hay coi vung chua do nhu mot phan cua chinh may chu# ve mat bao mat. # Kiem tra cac vung chua dang chay o che do nao,# va tu hoi tung cai co that su can dac quyen khong.Câu hỏi thường gặp
Container LXC khác container ứng dụng thế nào
Container ứng dụng đóng gói một tiến trình và các thư viện của nó, thường sống ngắn và tạo lại từ ảnh. Container kiểu hệ thống như LXC chạy cả một môi trường Linux với nhiều tiến trình, giống một máy ảo nhẹ hơn là một ứng dụng đóng gói.
Chạy công cụ container ứng dụng bên trong container LXC được không
Được nhưng cần cấu hình thêm và thường phải bật đặc quyền, làm giảm mức cách ly. Cách sạch hơn là chạy chúng bên trong một máy ảo, hoặc chạy thẳng trên máy chủ nếu đó là mục đích chính.
Container có sao lưu như máy ảo không
Có, cùng công cụ và cùng lịch. Bản sao lưu container thường nhỏ hơn nhiều so với máy ảo cùng chức năng vì không có nhân và không có phần cứng ảo, nên tác vụ sao lưu cũng nhanh hơn.
Nên chạy cơ sở dữ liệu trong container không
Với cơ sở dữ liệu nội bộ không quan trọng thì được và tiết kiệm tài nguyên. Với cơ sở dữ liệu chính của doanh nghiệp thì nên dùng máy ảo, vì bạn có ranh giới cứng hơn, chuyển được giữa các máy chủ và tách biệt hoàn toàn khỏi nhân của máy chủ.
