27 điểm bởi GN⁺ 2024-03-08 | 2 bình luận | Chia sẻ qua WhatsApp
  • Công cụ biên dịch image Docker thành binary độc lập, có thể di chuyển được
  • Có thể cung cấp cho người dùng các binary có thể chạy được mà không cần các lệnh như docker run, pip install, npm i

Tính năng

  • Biên dịch image Docker thành binary có tính di động.
  • Container không cần quyền root.
  • Hỗ trợ MacOS và Windows (dùng QEMU): dự kiến
  • Hỗ trợ x86_64 (dự kiến hỗ trợ arm64)
  • Hỗ trợ tham số
  • Hỗ trợ chỉ định biến môi trường bằng -e.
  • Hỗ trợ chỉ định volume bằng -v.

Cách sử dụng

  • Cài đặt dockerc từ bản phát hành mới nhất.
  • Tạo binary đầu ra bằng image từ Docker Hub hoặc image trong kho của local Docker daemon.
  • Binary được tạo ra có thể được gọi như binary thông thường.
  • Có thể chỉ định các tùy chọn -e-v theo cùng cách như khi dùng docker run.
  • Có thể truy cập trực tiếp các dịch vụ mạng chạy bên trong container, không cần chỉ định -p.
  • Việc nạp image sử dụng Skopeo, với các vị trí khác thì tham khảo tài liệu tương ứng.

Ý kiến của GN⁺

  • dockerc là một công cụ có thể cải thiện đáng kể tính tiện dụng của Docker, giúp người dùng chạy ứng dụng mà không cần quy trình cài đặt phức tạp. Điều này có thể đặc biệt hữu ích với người dùng không chuyên về kỹ thuật.
  • Tính năng biên dịch image Docker thành binary giúp đơn giản hóa việc phân phối và triển khai, từ đó mang lại khả năng tiết kiệm thời gian và tăng hiệu quả cho nhà phát triển và quản trị viên hệ thống.
  • Tuy nhiên, để công nghệ này được chấp nhận rộng rãi, các vấn đề liên quan đến bảo mật, hiệu năng và khả năng tương thích cần được giải quyết đầy đủ. Ví dụ, cần xác minh liệu binary đã biên dịch có an toàn như image Docker gốc hay không, và liệu nó có hoạt động trơn tru trên mọi hệ thống hay không.
  • Một dự án khác cung cấp chức năng tương tự Docker là Podman, vốn hỗ trợ chạy container không cần quyền root.
  • Khi áp dụng dockerc, cần cân nhắc việc tích hợp với workflow Docker hiện có, cách cập nhật và quản lý image, cũng như kích thước và hiệu năng của binary đã biên dịch. Lợi ích của việc chọn công nghệ này là đơn giản hóa phân phối và dễ sử dụng hơn, nhưng đồng thời cũng cần thận trọng xem xét overhead có thể phát sinh trong quá trình biên dịch và các vấn đề tương thích tiềm ẩn.

2 bình luận

 
cosine20 2024-03-11

Ồ, khá thú vị đấy.

 
GN⁺ 2024-03-08

Ý kiến trên Hacker News

  • Đây thực sự là một điều rất tuyệt.

    • Người dùng đang cố làm cho Docker của mình dễ phân phối hơn. Hiện tại đó là một script Python đơn giản nằm trong môi trường Python bên trong container Docker bên trong container QEMU để tự động hóa các thao tác nhấp chuột và dùng netcat. Kích thước tệp là 20GB, khá nhẹ theo tiêu chuẩn hiện đại.
  • Trước đây tôi đã dùng và khuyên dùng nix-bundle¹ hoặc phương án chính thức tương ứng của nó là nix bundle².

    • Các công cụ này cho phép bỏ qua bước phải trực tiếp quản lý Docker image. Điều này đặc biệt tiện khi việc tạo Docker image là khó khăn hoặc là một thứ nghệ thuật thất truyền.
    • nix bundle không chỉ có thể tạo ra các tệp thực thi cồng kềnh mà còn có thể tạo Docker image, AppImages và một vài định dạng image/tệp thực thi khác.
  • Việc quay lại với các tệp thực thi di động đi kèm hệ điều hành tích hợp sẵn thật sự rất hay.

    • Nó đưa câu "chạy trên máy tôi thì được" lên một cấp độ mới của địa ngục xử lý sự cố. Dù vậy, dự án này vẫn rất ngầu.
  • Người dùng đang chờ xem mọi người bắt đầu gửi các Dockerfile tạo ra các container Docker dùng để chạy những thứ như thế này.

  • Ở đây có một sự mỉa mai vũ trụ rất lớn.

    • Ngay sau phần nói rằng chỉ cần tệp thực thi mà không cần build hay cài đặt gì, là thần chú zig để build chính dự án này.
  • Đây là một bước tiến rất hay, Nils! Thật vui khi thấy dự án đã tiến triển kể từ sau cuộc trò chuyện ở AGI House.

    • dockerc dùng Zig + crun + squashfs/overlayfs. Nils (tác giả) đã chia sẻ thêm thông tin trong chủ đề này.
  • Vẫn cần những thứ khác nhau cho các kiến trúc khác nhau.

    • Ở thời điểm này, tôi nghĩ tốt hơn là nên biên dịch tĩnh và nhúng một hệ thống tệp ảo. Thực ra điều này gần giống với những gì Sun đã làm từ thập niên 90.
  • Ý tưởng hay đấy! Thực tế nó hoạt động như thế nào?

    • Người dùng đoán rằng đây là một custom loader + Docker + image được bọc lại thành một binary có thể thực thi.
  • Việc dùng bức vẽ rant thật tuyệt.

    • Bức vẽ rant tiếp theo có lẽ sẽ là "khi chạy một tệp thực thi thì một cửa sổ chứa ứng dụng tương ứng phải mở ra".
  • Điều này có nghĩa là gì? Người dùng giờ có thể phân phối một tệp thực thi Ruby di động mà không cần người dùng cài Ruby sao?