Pertama, sementara Docker kadang-kadang dilihat dan digunakan sebagai sistem pengemasan ad hoc , itu sebenarnya memecahkan masalah yang sama sekali berbeda: Docker adalah tentang menjalankan program. Sistem Docker memungkinkan untuk menggambarkan layanan, yang dapat ditingkatkan sesuai keinginan dan untuk mengendalikan gerombolan kontainer. Paket Debian adalah untuk menginstal program dan mereka dapat menangani dependensi antara versi perangkat lunak. Buruh pelabuhan tentu saja tidak memenuhi syarat sebagai sistem pengemasan keturunan: setiap "paket" hanya dapat memiliki satu ketergantungan, sistem tidak memiliki opsi "rekursif membangun" dan tidak mendukung batasan versi yang rumit!
Jawaban yang mungkin adalah bahwa, jika Anda ingin menulis paket Debian untuk aplikasi Anda, Anda juga dapat menggunakan Docker untuk menggunakan aplikasi Anda. Ini dapat dicapai dengan skrip konfigurasi apt_setup.sh
yang akan terlihat seperti
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
dan Dockerfile
sepanjang garis
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
(Dalam situasi spesifik Anda, apt_setup.sh
akan lebih rumit, menambahkan repositori nodesource dan beberapa paket pembantu seperti apt-transport-https .)
Oleh karena itu sangat mungkin untuk menggunakan paket Debian dan Docker secara bersamaan, namun ...
Naluri saya [...] memberi tahu saya bahwa jika paket deb cocok, itu akan lebih umum
Ini adalah halangan yang benar yang membuat kita bertanya pada diri sendiri mengapa Docker terbukti populer sebagai sistem pengemasan ad hoc , sementara itu tidak dimaksudkan untuk menjadi satu. (Lihat di atas.)
Sistem pengemasan "resmi" dari distribusi yang diberikan hanyalah kemungkinan di antara banyak lainnya untuk menginstal perangkat lunak di beberapa lingkungan komputasi. Ada banyak sumber lain yang tersedia, seperti pengelola paket khusus komunitas seperti npm atau opam, pohon port seperti pkgsrc dan distribusi kode sumber biasa. Dari perspektif ini, mudah untuk memahami keberhasilan Docker sebagai sistem pengemasan ad hoc :
Spesifikasi Docker sangat dekat dari skrip shell dan sumber apa pun asalnya, kami memasang perangkat lunak menggunakan shell.
Docker memiliki layanan "bayar" untuk hosting artefak yang dihasilkannya, Docker Hub .
Sekarang apa kekuatan paket Debian di atas gambar Docker sebagai sistem paket? Kontrol ketat atas dependensi saat instalasi. (Kemungkinan untuk meningkatkan dan menurunkan versi juga ada tetapi tidak memiliki kepentingan praktis jika kita menerapkan pola server yang tidak dapat diubah .) Hal ini mengarah pada
Kesimpulan
Jika Anda hanya memiliki satu produk yang digunakan dalam satu versi (yang tipikal untuk SaaS), kebutuhan manajemen versi Anda sangat sederhana dan menggunakan Docker sebagai pengelola paket ad hoc seharusnya tidak memiliki kelemahan yang sulit. Segera setelah Anda bekerja dengan beberapa versi dari satu produk atau beberapa produk, kompleksitas masalah kendala versi yang Anda butuhkan untuk menyelesaikan peningkatan dan Anda memerlukan alat yang sesuai untuk ini, yang mungkin berupa paket Debian atau beberapa sistem manajemen konfigurasi jika Anda menginginkannya. pencampuran perangkat lunak dari asal yang berbeda.