Pertanyaan Bagaimana mengelola dependensi gambar buruh pelabuhan (perawatan)


Dengan menggunakan buruh pelabuhan, Anda dapat membuat gambar berdasarkan gambar lain dengan sangat baik. Misalnya, Anda dapat membuat gambar Java-jdk7 (berdasarkan LTS Ubuntu terbaru), dan berdasarkan itu membuat gambar elastis-pencarian dan tomcat7 (keduanya membutuhkan java).

Jadi, jika saya tidak menandai gambar saya, saya akan mendapatkan yang berikut ini (ekstrak docker images):

╔══════════════════════╦════════╦══════════════╗
║      REPOSITORY      ║  TAG   ║      ID      ║
╠══════════════════════╬════════╬══════════════╣
║ ubuntu               ║ 12.04  ║ 8dbd9e392a96 ║
║ quintenk/jdk7-oracle ║ latest ║ 8928245086f4 ║
║ quintenk/tomcat7     ║ latest ║ 995cdb2cbfa8 ║
║ quintenk/elastics    ║ latest ║ 123abc456ef2 ║
╚══════════════════════╩════════╩══════════════╝

Sekarang untuk pertanyaannya. Bagaimana saya harus menjaga ketergantungan ini? Bagaimana cara melakukan pemeliharaan satu gambar dan gambar tergantung juga?

  1. Jika saya memperbarui gambar jdk saya (apt-get upgrade misalnya), saya menganggap saya tidak merusak gambar tergantung? Namun, saya juga berasumsi bahwa pohon ketergantungan tidak seperti yang Anda harapkan lebih lama. [PEMBARUAN: Saya telah mereproduksi ini, jadi lihat jawaban saya di bawah]
  2. Jika 1 benar, apakah ada cara agar saya bisa membuat gambar yang tergantung itu menjadi usang, dan (semoga) membuat mereka membangun kembali diri mereka sendiri?

Atau apakah cara untuk menandai penampung dengan nomor versi, dan membangun kembali secara manual dan mendistribusikan ulang semua dependensi dengan tag nomor versi yang ditingkatkan? Itu berarti Dockerfiles perlu diubah untuk pembaruan.

MEMPERBARUI: Saya menemukan gambar berikut di situs buruh pelabuhan di mereka presentasi. Namun, saya tidak yakin pada langkah-langkah bagaimana melakukan ini (terutama dengan ketergantungan pada gambar lain seperti yang saya jelaskan).

Update flow for docker containers


32
2017-07-30 09:34


asal


Jawaban:


Ini adalah kasus penggunaan yang bagus. Harap kirimkan permintaan peningkatan pada Halaman masalah Docker.

Cara sederhana untuk sekarang adalah memelihara Dockerfiles dan memperbarui dari sana, membangun kembali gambar ketika Anda ingin membuat perubahan yang disengaja.


9
2017-07-30 17:41



Sebagai jawaban atas

Jika saya memperbarui gambar jdk saya (apt-get upgrade misalnya), saya menganggap saya tidak merusak gambar tergantung? Namun, saya juga berasumsi bahwa pohon ketergantungan tidak seperti yang Anda harapkan lebih lama.

Saya telah memverifikasi ini dengan memperbarui gambar dependen, dan memeriksa dependensi. Apa yang Anda dapatkan memang keadaan yang valid, tetapi gambar yang bergantung tidak didasarkan pada gambar yang Anda harapkan dengan naif lebih lama:

docker dependency tree


5
2017-07-31 08:27



Saya merasa menggunakan multi-tahap membangun juga dapat membantu dalam menghindari jebakan seperti itu. Ini akan membantu Anda menyimpan dockerfile tunggal per aplikasi.


0
2018-05-21 00:16