Đầu tiên, trong khi Docker đôi khi được nhìn thấy và sử dụng như một hệ thống đóng gói đặc biệt , nó thực sự giải quyết một vấn đề hoàn toàn khác: Docker là về việc chạy các chương trình. Các Docker hệ thống cho phép để mô tả dịch vụ, có thể được thu nhỏ lại theo ý thích và để kiểm soát bầy của container. Các gói Debian dùng để cài đặt chương trình và chúng có thể xử lý các phụ thuộc giữa các phiên bản phần mềm. Docker chắc chắn không đủ điều kiện là một hệ thống đóng gói gốc: mỗi gói Gói chỉ có thể có một phụ thuộc, hệ thống không có tùy chọn xây dựng đệ quy và không hỗ trợ các ràng buộc phiên bản phức tạp!
Một câu trả lời có thể là, nếu bạn sẵn sàng viết gói Debian cho ứng dụng của mình, bạn cũng có thể sử dụng Docker để triển khai ứng dụng của mình. Điều này có thể đạt được với một kịch bản cấu hình apt_setup.sh
trông giống như
apt-key add - <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
<YOUR RELEASE OFFICER PGP KEY GOES HERE>
EOF
cat >> /etc/apt/sources.list <<EOF
deb https://my.organisation.org/repo debian-jessie main
apt-get update -y
apt-get upgrade -y
EOF
và Dockerfile
dọc theo dòng
ADD apt_setup.sh /root
RUN sh -ex /root/apt_setup.sh && rm /root/apt_setup.sh
RUN apt-get install -y my-node-js-package
(Trong tình huống cụ thể của bạn, việc apt_setup.sh
này sẽ phức tạp hơn, thêm các kho lưu trữ nút nguồn và một số gói trợ giúp như apt-Transport-https .)
Do đó, thực sự có thể sử dụng các gói Debian và Docker cùng một lúc, tuy nhiên
Ruột [tôi] đang nói với tôi rằng nếu các gói deb phù hợp thì nó sẽ phổ biến hơn
Đây là một trở ngại chính xác khiến chúng ta phải tự hỏi tại sao Docker chứng tỏ là phổ biến như một hệ thống đóng gói ad hoc , trong khi nó không có ý định là một. (Xem ở trên.)
Hệ thống đóng gói chính thức của NỀN TẢNG từ một bản phân phối nhất định chỉ là một khả năng trong số nhiều người khác để cài đặt phần mềm trong một số môi trường máy tính. Có nhiều nguồn khác có sẵn, như các trình quản lý gói dành riêng cho cộng đồng như npm hoặc opam, các cây cổng như pkgsrc và phân phối mã nguồn đơn giản. Từ quan điểm này, thật dễ hiểu cho sự thành công của Docker như một hệ thống đóng gói đặc biệt :
Thông số kỹ thuật của Docker rất gần với kịch bản shell và bất kể nguồn gốc nào, chúng tôi cài đặt phần mềm bằng shell.
Docker có một dịch vụ tích hợp (trả tiền) tích hợp trên mạng để lưu trữ các vật phẩm mà nó tạo ra, Docker Hub .
Bây giờ sức mạnh của các gói Debian so với hình ảnh Docker là một hệ thống gói là gì? Việc kiểm soát chặt chẽ các phụ thuộc lúc cài đặt. (Khả năng nâng cấp và hạ cấp cũng tồn tại nhưng không có tầm quan trọng thực tế nếu chúng ta đang triển khai mô hình máy chủ bất biến .) Điều này dẫn đến
Phần kết luận
Nếu bạn chỉ có một sản phẩm được triển khai trong một phiên bản duy nhất (điển hình cho SaaS), thì nhu cầu quản lý phiên bản của bạn rất đơn giản và sử dụng Docker làm trình quản lý gói ad hoc không nên có bất kỳ nhược điểm khó khăn nào. Ngay khi bạn làm việc với một số phiên bản của một sản phẩm hoặc một số sản phẩm, sự phức tạp của vấn đề ràng buộc phiên bản bạn cần giải quyết tăng lên và bạn cần một công cụ thích hợp cho việc này, có thể là các gói Debian hoặc một số hệ thống quản lý cấu hình nếu bạn là phần mềm trộn từ các nguồn gốc khác nhau.