sự khác biệt chính giữa Docker và Snap là gì?


85

Trong gần đây (đáng buồn là paywalled ) có một bài viết về Snap và Flatpak.

nhập mô tả hình ảnh ở đây

Điều này nghe có vẻ rất giống với Docker, rất nhiều khái niệm giống nhau. Bây giờ câu hỏi của tôi sự khác biệt giữa Snap và Docker là gì? Là những trường hợp sử dụng khác nhau?

Câu trả lời:


110

Bạn có thể tìm thấy bài nói chuyện của Mark Shuttleworth "Tại sao chúng tôi cần một container khác hoàn toàn cho các ứng dụng" tại Container Camp liên quan đến câu hỏi của bạn. Anh ấy nói chung về VM, container và Docker khi bắt đầu, tiếp tục chụp và cách chúng hoạt động trong khoảng chín phút. Đây là tóm tắt của tôi:

  • Các loại container khác nhau trông giống nhau nhưng được sử dụng cho các mục đích khác nhau.
  • Các container không thực sự tồn tại ở cấp kernel. Các loại ảo ảnh khác nhau là có thể. Một cách độc lập, chúng ta có thể tạo ra ảo tưởng về những gì người dùng, mạng, đĩa và xử lý một container nhìn thấy.
  • Các loại container khác nhau thực sự là về các lớp ảo ảnh khác nhau được tạo ra.
  • Snaps là:
    • Bất biến, nhưng vẫn là một phần của hệ thống cơ sở.
    • Được tích hợp về mặt mạng, vì vậy hãy chia sẻ địa chỉ IP của hệ thống, không giống như Docker, nơi mỗi container có địa chỉ IP riêng.
    • Nói cách khác, Docker cho chúng ta một thứ ở đó . Snaps cho chúng ta một điều ở đây . Ví dụ, trên máy tính để bàn, một snap cung cấp một ứng dụng ngay trên nó.
    • Một snap không thể gây ô nhiễm phần còn lại của hệ thống. Nó nằm trong hộp riêng của nó. Nhưng nó vẫn có thể thấy (chỉ đọc) phần còn lại của hệ thống, cho phép nó nói chuyện và tích hợp với hệ thống.

Bạn đã hỏi về các trường hợp sử dụng khác nhau so với Docker. Đây là một điều mà snaps có thể làm, nhưng Docker không thể: ứng dụng máy tính để bàn. Các bên thứ ba có thể gửi ứng dụng máy tính để bàn bằng snaps và người dùng có thể dễ dàng cài đặt và cập nhật chúng. Hộp chứa Docker không thể (dễ dàng) tương tác với người dùng bằng đồ họa trên màn hình, tải tài liệu từ thư mục chính của người dùng hoặc cung cấp hội nghị video qua webcam của người dùng. Snaps có thể (một khi được cho phép).

Bạn có thể hỏi làm thế nào điều này tốt hơn so với việc sử dụng PPA. Nhưng so với Docker, điều đó giống như hỏi cách Docker tốt hơn là cài đặt phụ thuộc vào hệ thống bằng tay. Nó tốt hơn, nhưng chính xác làm thế nào có thể được trả lời tốt nhất trong một câu hỏi riêng biệt, không dành riêng cho Docker.


3
Đây không phải là sự thật. Docker có thể tương tác với các ứng dụng máy tính để bàn (một khi được cho phép). github.com/jamrizzi/docker-gtk
Jam Risser

2
Điều này nghe giống như Sandboxie cho các cửa sổ. Các chương trình hộp cát có thể mở hộp thoại, truy cập tất cả các tệp cục bộ, nhưng khi chúng viết, chúng chỉ ghi vào hộp cát của chúng.
feedc0de

1
Công cụ mà bạn liên kết để làm gì khác với một docker bình thường? Bạn có thể gắn ổ cắm x11 của mình vào docker mà không cần bất kỳ phiên bản docker đặc biệt nào.
feedc0de

1
Đây không phải là một công cụ, đó là một cuộc biểu tình
Jam Risser

1
@jamrizzi Có vẻ như những gì bạn làm chỉ đơn giản là cấp cho docker quyền truy cập vào ổ cắm X11 trong một tập lệnh. Điều này còn khá xa so với việc người dùng tham gia vào bất kỳ quy trình nào trong quá trình này (nơi "Docker muốn truy cập vào cuộc hội thoại. Hủy hay cho phép?"
Thorbjørn Ravn Andersen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.