Tìm kiếm trang web

Tôi đã thay Docker Desktop bằng các container Linux gốc và không bao giờ nhìn lại


Docker Desktop không thể phủ nhận là tinh tế. Giao diện sạch sẽ, quản lý chỉ với một cú nhấp chuột, và việc trừu tượng hóa các phức tạp làm cho nó tuyệt vời cho người mới bắt đầu, nhưng sự trừu tượng đó đi kèm với một cái giá.

Chạy Docker Desktop trên Linux hầu như không có ý nghĩa vì Docker Desktop tự bản thân nó khởi tạo một máy ảo Linux ẩn để hoạt động. Vì vậy, các container của bạn thực sự không chạy trên máy của bạn mà chạy bên trong một VM. Lớp bổ sung này liên tục tiêu tốn tài nguyên và biến việc khắc phục sự cố thành cơn ác mộng, đó là lý do tại sao tôi quyết định chuyển sang các container Linux gốc và không bao giờ nhìn lại.

Incus không chỉ là "một giải pháp thay thế Docker khác"

Nó xuất phát từ một truyền thống container khác

Hầu hết các lựa chọn thay thế Docker đều cố gắng hoạt động giống như Docker. Podman giữ cho mô hình hình ảnh và lệnh quen thuộc, nerdctl cung cấp cho containerd một giao diện giống Docker, và Rancher Desktop cùng các công cụ tương tự gói Kubernetes cục bộ hoặc runtime container thành một thứ gì đó dễ tiếp cận hơn. Đây là những công cụ hữu ích, nhưng chúng vẫn chủ yếu tồn tại trong thế giới container ứng dụng.

Incus đến từ một dòng dõi khác. Nó là sự tiếp nối cộng đồng của mô hình container hệ thống kiểu LXD, có nghĩa là nó được xây dựng xung quanh ý tưởng quản lý các môi trường Linux hoàn chỉnh, không chỉ là các hình ảnh ứng dụng đơn lẻ. Một container Incus có thể cảm giác giống như một máy ảo nhẹ. Nó có một hệ thống init, mạng, lưu trữ, cấu hình, ảnh chụp nhanh và danh tính bền vững. Bạn có thể SSH vào nó, cài đặt các gói, chạy dịch vụ và xử lý nó như một máy nhỏ.

Nhưng trong một thời gian dài, tôi phải sử dụng Docker cho các hình ảnh ứng dụng OCI và Incus cho các container hệ thống và máy ảo, nhưng sau đó Incus bắt đầu hỗ trợ các container OCI, và bây giờ tôi có thể chạy hầu hết các container của mình bằng nó.

Hỗ trợ OCI đã thay đổi phương trình

Bây giờ bạn có thể chạy các hình ảnh docker trên Incus

Hỗ trợ OCI là phần làm cho Incus trở nên thú vị hơn nhiều như một sự thay thế cho Docker Desktop. Docker đã phổ biến hóa quy trình làm việc này, nhưng định dạng hình ảnh và hệ sinh thái registry không còn gắn liền với trải nghiệm Docker Desktop nữa. Phần lớn những gì mọi người gọi là “Docker images” thực ra là các hình ảnh kiểu OCI được phân phối qua các registry.

Với hỗ trợ OCI của Incus, tôi có thể kéo và chạy các container ứng dụng sử dụng hình ảnh từ các registry như Docker Hub. Điều đó có nghĩa là khoảng cách thực tế trở nên nhỏ hơn. Tôi có thể chạy một container hệ thống Linux bình thường khi tôi cần một môi trường bền vững, và tôi có thể chạy một container ứng dụng OCI khi tôi chỉ cần dịch vụ đã đóng gói.






Đây là sự thay đổi khiến Incus trở nên rõ ràng đối với tôi, vì hạ tầng địa phương của tôi có thể chứa cả hai loại container. Tôi ưu tiên container OCI khi hình ảnh ứng dụng đã là đơn vị phù hợp. Điều đó có nghĩa là Nginx, Caddy, Redis, các ứng dụng web nhỏ, exporter, dịch vụ thử nghiệm và các công cụ được đóng gói sẵn có thể chạy dưới dạng container OCI. Một máy phát triển, môi trường xây dựng hoặc máy chủ dịch vụ có thể chạy như một container hệ thống. Các máy ảo vẫn sẵn sàng cho những trường hợp tôi cần một kernel riêng biệt hoặc ranh giới cô lập mạnh hơn.

Tôi sẽ không nói Incus là một bản thay thế Docker Compose một-một hoàn hảo vì Compose vẫn rất tốt trong việc mô tả các ngăn xếp ứng dụng nhiều container. Điều tốt là Incus không cố gắng trở thành Compose với một logo khác. Nó cảm giác giống hơn như một đám mây riêng tại chỗ với hỗ trợ nhiều loại instance khác nhau và đó là một mô hình khác, và cần một chút điều chỉnh, nhưng mặt tích cực là sự điều chỉnh này mang lại kết quả nhanh chóng.

Giao diện web khiến Incus cảm giác như một đám mây cục bộ

Nó mang lại khả năng hiển thị mà không biến mọi thứ thành một sản phẩm bảng điều khiển

Dòng lệnh Incus đủ tốt để bạn có thể quản lý mọi thứ từ terminal. Đó là cách tôi bắt đầu hầu hết các công việc hàng ngày. Một thời gian, tôi đã không nghĩ rằng mình cần gì thêm.

Sau đó tôi bắt đầu sử dụng giao diện web. Giao diện web thay đổi cảm giác của Incus. Nó làm cho các container, VM, mạng, dung lượng lưu trữ, hồ sơ và hình ảnh hiển thị ở cùng một nơi. Bạn có thể xem những gì đang chạy, kiểm tra cấu hình, mở bảng điều khiển, kiểm tra các snapshot và hiểu được cấu trúc của môi trường mà không cần chạy năm lệnh và gộp kết quả theo cách tư duy. Ngoài ra, bạn có thể truyền GPU chỉ bằng vài cú nhấp chuột.

Giao diện web không phải là sự thay thế cho việc hiểu hệ thống, nhưng nó rất tốt trong việc làm cho hệ thống có thể kiểm tra được. Incus mang lại cho tôi điều đó mà không biến GUI thành trung tâm của kiến trúc.

Quy trình làm việc hàng ngày của tôi trở nên đơn giản hơn

Người dẫn cảm thấy sạch sẽ hơn

Điều đầu tiên tôi nhận thấy sau khi chuyển nhiều công việc sang Incus là máy chủ của tôi cảm thấy sạch sẽ hơn rất nhiều. Tôi có thể ngừng cài đặt các phiên bản ngẫu nhiên của cơ sở dữ liệu, môi trường thực thi ngôn ngữ, hàng đợi tin nhắn và các phụ thuộc xây dựng trực tiếp trên laptop. Điều đó tất nhiên cũng đúng với Docker, nhưng Incus làm cho các môi trường phát triển chạy lâu cảm thấy tự nhiên hơn.

Ví dụ, nếu tôi muốn một hộp phát triển dựa trên Debian, tôi không cần phải viết một Dockerfile chỉ để mô phỏng một hệ thống bình thường. Tôi có thể khởi chạy một container Debian, cài đặt những gì tôi cần, chụp nhanh nó, và giữ lại. Nếu tôi làm hỏng điều gì đó, tôi khôi phục snapshot. Nếu tôi muốn một bản sao thứ hai, tôi nhân bản nó. Nếu tôi cần thử nghiệm trên một bản phân phối khác, tôi khởi chạy một hình ảnh khác.

Điều này đặc biệt hữu ích cho việc viết hạ tầng và thực nghiệm. Khi tôi đang thử nghiệm hành vi của systemd, các công cụ mạng, sự khác biệt giữa các trình quản lý gói, hoặc cấu hình dịch vụ, một container hệ thống có ý nghĩa hơn một container Docker chạy một tiến trình duy nhất. Tôi muốn môi trường hoạt động giống như một máy Linux nhỏ vì đó thường là nội dung của bài viết hoặc thí nghiệm. Docker có thể được điều chỉnh vào vai trò đó, nhưng luôn cảm thấy hơi lệch.

Mạng lưới kết nối ít bí ẩn hơn

Nó vẫn đang kết nối mạng, vì vậy nó vẫn có thể trừng phạt bạn

Mạng lưới container là nơi nhiều công cụ “đơn giản” trở nên phức tạp hơn. Docker Desktop che giấu nhiều điều về vấn đề này, đặc biệt trên các nền tảng không phải Linux. Trên Linux, sự kỳ diệu ít cần thiết hơn, nhưng thói quen vẫn còn. Bạn công bố cổng, kiểm tra cầu nối, tự hỏi đường dẫn DNS nào đang được sử dụng, và cuối cùng phải đọc các quy tắc iptables hoặc nftables trong khi hối tiếc về sự lạc quan ban đầu.

Mạng Incus cảm giác rõ ràng hơn vì bạn có thể tạo các cầu được quản lý, gắn các phiên bản vào mạng, gán thiết bị thông qua các hồ sơ, sử dụng thiết bị proxy và kiểm tra cấu hình theo cách cảm giác gần với quản trị Linux thông thường. Nó không loại bỏ nhu cầu hiểu về mạng và không có điều gì tốt mà làm được điều đó (tôi thậm chí còn nói là 'nên'), nhưng nó làm mô hình dễ hiểu hơn vì container được coi như một phiên bản được quản lý với các thiết bị, không chỉ là một tiến trình với các ánh xạ cổng.


Tại sao tôi không quay lại?

Lý do tôi ở lại với Incus không phải vì ý thức hệ. Tôi không quan tâm đến việc thay một biểu tượng bằng một biểu tượng khác. Tôi quan tâm đến việc có một môi trường cục bộ nhanh, có thể kiểm tra được, có thể lập trình được và gần gũi với Linux. Incus cung cấp cho tôi các container hệ thống khi tôi cần các máy Linux nhỏ và các VM khi container không đủ. Sự kết hợp đó khó có thể đánh bại.

Docker Desktop vẫn hữu ích với nhiều người, đặc biệt là trên macOS và Windows, nơi mà container Linux phải chạy qua một máy ảo dù sao đi nữa. Trên Linux, tuy nhiên, tôi không còn thấy lý do để mang thêm lớp đó cho quy trình làm việc hàng ngày của mình. Các container Linux gốc cảm giác trực tiếp hơn và Incus giúp quản lý chúng mà không làm chúng trở nên đơn giản hóa.

Bài viết liên quan