2015-07-19 30 views
10

Sự khác biệt lớn giữa một thùng chứa đang chạy trên đầu trang của trình docker và chương trình Java tự chứa đang chạy trên đỉnh của JVM là gì?Vùng chứa Linux vs JVM

Tôi cho rằng cả hai đều đang chạy trực tiếp trên máy chủ Linux thực mà không hiển thị trực quan.

Trả lời

3

Một chương trình java chạy trên đầu trang của JVM sẽ là một quá trình Linux duy nhất. JVM chạy bên trong tiến trình và giải thích (hoặc biên dịch) mã byte Java trong các lớp của bạn.

Thùng chứa đồ chứa đồ nặng hơn. Có docker daemon, docker container, mà thực sự là một cá thể Linux ảo hóa, và sau đó JVM của bạn chạy dưới đó.

Tôi tìm thấy https://docs.docker.com/engine/getstarted/step_one/https://docs.docker.com/engine/userguide/eng-image/baseimages/ hữu ích.

+0

Vùng chứa bộ chứa chỉ là nhóm kiểm soát, phải không? –

+0

@schtever Cả hai liên kết đều không hoạt động nữa. –

1

Chúng khác nhau đáng kể. Một chương trình java là một quá trình trên hạt nhân hệ điều hành. Một JVM đang chạy, thực hiện bytecode là chương trình java. Chương trình java có thể sử dụng bất kỳ lượng tài nguyên nào (tùy thuộc vào giới hạn JVM) và sử dụng hệ điều hành theo bất kỳ cách nào nó thích.

Vùng chứa docker là triển khai Ảo hóa hệ điều hành. Cách dễ nhất để hiểu các thùng chứa là nó cung cấp một phần độc lập của hệ điều hành bằng cách sử dụng ảo hóa. Việc sử dụng tài nguyên của vùng chứa có thể bị hạn chế và có thể bị cô lập sao cho không biết bất kỳ phần nào của hệ thống bên ngoài vùng chứa, Giống như Hệ thống tệp, mạng, các quy trình. Hạt nhân cung cấp các tính năng cụ thể - CGroups và Namespaces được sử dụng để cung cấp các thùng chứa.

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