Đối với người dùng Windows và macOS, Docker Desktop là cách chính để sử dụng bộ chứa Docker trong nhiều năm. Mặc dù nó vẫn là một tùy chọn khả thi và có thể sử dụng được cho những người yêu thích và các nhóm phát triển nhỏ, những thay đổi về giá gần đây đối với cơ sở người dùng lớn hơn đã khiến mọi người tìm kiếm các lựa chọn thay thế. Bản thân tôi không tìm cách thay thế Docker Desktop, nhưng tôi muốn thử các giải pháp thay thế và xem chúng so sánh như thế nào.
Phiên bản video của bài đăng này
Bạn có thể tìm thấy phiên bản video của bài đăng này với nhiều thao tác thực hành hơn bằng cách sử dụng phạm vi bảo hiểm của từng công cụ trên YouTube.
Thuật ngữ
Bản thân các container không phải là một khái niệm mới trong công nghệ, nhưng Docker trở lại vào giữa những năm 2000 đã phổ biến khái niệm này và tiếp thị chúng đúng cách vào đúng thời điểm để đưa khái niệm này trở thành xu hướng chủ đạo.
Cần tách Docker công ty khỏi Docker dự án vì rất dễ nhầm lẫn chúng và chúng là những thực thể riêng biệt. Do sự nhầm lẫn này, Docker, công ty đã đổi tên và mã nguồn mở rất nhiều công nghệ liên quan đến vùng chứa của mình, góp phần tạo nên cái mà ngày nay được gọi là “ (OCI).
Tôi đang tóm tắt và tóm tắt rất nhiều ở đây, nhưng khi phần còn lại của bài đăng này đề cập đến các vùng chứa “tuân thủ OCI” và các thuật ngữ tương tự, thì hãy nghĩ về nó tương tự như những gì bạn có thể nghĩ là “vùng chứa Docker”. Tất cả những sự kiện và thay đổi này thực sự đã xảy ra cách đây một thời gian trong thời kỳ công nghệ, nhưng nó vẫn là một nguồn gây nhầm lẫn thường xuyên. Tldr… Tất cả các tùy chọn được nêu trong bài đăng này có thể chạy cùng một định nghĩa vùng chứa và điều này bao gồm các vùng chứa có sẵn của bạn từ Docker Desktop hoặc được tạo bằng Dockerfile . Một lưu ý khác, các dự án thường gọi các container chạy với Docker là “dockerd” và “Moby” thay thế cho nhau.
1. Podman
Có lẽ là giải pháp thay thế phổ biến nhất, có nhiều cộng tác viên từ Red Hat và có vẻ như Red Hat đang lên kế hoạch cho các phiên bản thương mại của Podman, có thể an toàn khi nói đó là một “dự án Red Hat”.
Nó có sẵn cho Windows, macOS và Linux và giống như nhiều công cụ khác được giới thiệu ở đây, tuân theo cú pháp tương tự như Docker với hai cảnh báo:
- Theo mặc định, bạn sử dụng
podman
thay vì Docker, nhưng bạn có thể tạo bí danh và quên đi thay đổi lệnh đó. - Docker Desktop theo mặc định giả định rằng bạn muốn sử dụng hình ảnh vùng chứa từ trung tâm Docker, trong khi tất cả các lựa chọn thay thế khác đều không đưa ra giả định đó. Điều này có nghĩa là bạn cần chỉ định đường dẫn đầy đủ đến nhiều hình ảnh mà bạn có thể sử dụng thường xuyên, ví dụ: “ ”.
Một trong những điểm khác biệt chính giữa Podman và các lựa chọn thay thế khác được nêu ở đây, bao gồm cả Docker Desktop, là nó không có daemon. Điều này có nghĩa là mọi vùng chứa đang chạy sẽ chạy như một quy trình thời gian chạy của chính nó, không thông qua một daemon. Nếu trình nền Docker bị lỗi, tất cả các vùng chứa đang chạy đều bị lỗi, trong khi với Podman, chỉ có vùng chứa riêng lẻ bị lỗi. Điều đó nói rằng, cá nhân tôi chưa bao giờ gặp lỗi daemon Docker, nhưng tôi không chạy khối lượng công việc sản xuất.
Giống như tất cả các công cụ khác ở đây, trong lần chạy đầu tiên, Podman cần tạo một máy ảo trên macOS và Windows để lưu trữ các vùng chứa. Ngày càng nhiều trên macOS và Windows, điều này không phải lúc nào cũng cần thiết, nhưng để có khả năng tương thích đa nền tảng (và kiến trúc) tối đa, điều đó có ý nghĩa. Podman sử dụng Fedora CoreOS (lại có kết nối Red Hat đó) và QEMU để chạy VM.
Máy tính để bàn Podman
Bạn đồng hành đồ họa với Podman là , nhưng về lý thuyết, nó sẽ liệt kê các hình ảnh và vùng chứa được tạo bởi các thời gian chạy khác, inc. Giống như nhiều công cụ đồ họa khác, nó cũng bổ sung các tính năng để tương tác với Kubernetes, nhưng tôi sẽ xem xét các tính năng đó trong một bài đăng sau. Nó có thể cung cấp các tính năng giống như Docker Desktop, bao gồm các tính năng mà tôi không nhận ra là tuân theo bất kỳ tiêu chuẩn nào, chẳng hạn như tiện ích mở rộng, nhưng kém bóng bẩy hơn một chút và thiếu một số tính năng dành riêng cho hệ điều hành mà Docker Desktop cung cấp.
2. Cô-li-ma
Chỉ khả dụng cho Linux và macOS, sử dụng để kích hoạt máy ảo Linux trên macOS. Nó hỗ trợ thời gian chạy Docker, Containerd và Kubernetes và trong mọi trường hợp, bạn cần cài đặt thời gian chạy đó cùng với Colima. Trong trường hợp Docker trên macOS, điều này không hoàn toàn giống với Docker Desktop.
Việc sử dụng Colima đơn giản như vậy, nhưng thực tế là bạn vẫn cần cài đặt thời gian chạy cùng với nó khiến tôi tự hỏi “Colima là gì?”, và thành thật mà nói, tài liệu tối thiểu không làm cho nó rõ ràng hơn chút nào. Khẩu hiệu là “Thời gian chạy vùng chứa trên macOS (và Linux) với thiết lập tối thiểu”, nhưng điều đó vẫn chưa làm rõ lý do tại sao tôi cần nó. Theo như tôi có thể nói, lý do chính là để sử dụng containerd hoặc làm phụ trợ Kubernetes (thay vì Docker Dkestop, minikube, v.v.) và có thể lý do chính để hỗ trợ Docker là khả năng tương thích ngược.
3. Máy tính để bàn trang trại
Mặc dù nó chủ yếu tự quảng cáo là một công cụ quản lý Kubernetes, cũng cung cấp một số tính năng quản lý vùng chứa bên ngoài Kubernetes. Nó hỗ trợ các container chạy với containerd hoặc Docker và cung cấp hầu hết các tính năng giống như các công cụ đồ họa khác trong danh sách này. Một lần nữa, QEMU cung cấp VM để mọi thứ chạy trên đó, không có tùy chọn nào để thay đổi điều đó. Đó là một công cụ hoàn toàn phù hợp và là một trong những lựa chọn thay thế hoàn thiện hơn, nhưng tôi có xu hướng thấy cần phải khởi động lại và đặt lại VM rất nhiều khi bạn thực hiện các thay đổi, điều này hơi tẻ nhạt.
4. VMWare Fusion
Nếu bạn đã sử dụng VMWare Fusion để chạy máy ảo Windows và Linux, . Tuy nhiên, tính năng này hiện chỉ hoạt động với máy Mac dựa trên Intel, mặc dù trình cài đặt vẫn cài đặt công cụ CLI và mang đến cho bạn hy vọng hão huyền.
5. Song hành
Một lần nữa, nếu bạn đã sở hữu và sử dụng cho máy ảo Linux và Windows, thì bạn có thể sử dụng nó làm phụ trợ cho minikube, chủ yếu nhằm mục đích sử dụng Kubernetes, nhưng nó liền kề với vùng chứa, vì vậy tôi đưa nó vào như một loại tùy chọn .
Những gì tôi sử dụng
Hiện tại, với tư cách là một người đóng góp cá nhân, tôi hài lòng với Docker Desktop và tôi thích các tính năng bổ sung mà nó cung cấp để tích hợp liền mạch và hiệu quả hơn với hệ điều hành máy chủ.
Nếu điều gì đó thay đổi khiến những người như tôi không hài lòng, thì tôi có thể sẽ chuyển sang Podman, có lẽ với Podman Desktop, điều đó sẽ phụ thuộc vào trạng thái của dự án tại thời điểm đó. Thế còn bạn?