Anda akhirnya menyerah pada kemurahan wadah dan menemukan bahwa mereka memecahkan banyak masalah dan memiliki banyak keuntungan:
- Kontainer tidak dapat diubah: OS, perpustakaan, folder, dan aplikasi - karena semua ini disimpan langsung dalam wadah, Anda 100% yakin bahwa gambar yang diuji dalam QA akan selalu diproduksi. Dan itu akan bekerja dengan cara yang persis sama.
- Wadah ringan: Wadah tidak membuang-buang memori. Alih-alih ratusan megabita dan gigabita, sebuah wadah hanya membutuhkan memori untuk proses utama.
- Wadahnya cepat: Wadah dimulai secepat proses Linux biasa. Bukan menit, tetapi secara harfiah detik.

Namun, masih banyak yang percaya bahwa kontainer adalah mesin virtual, dan lupakan properti terpenting mereka ...
Wadah efemeral
Disposability adalah mengapa Anda harus mengubah pendekatan Anda tentang cara menangani wadah.
Dan inilah yang harus dilakukan agar tidak kehilangan keunggulan wadah:1. Tidak perlu menyimpan data di dalam wadah. Selama siklus hidup, wadah dapat ditangguhkan, dihancurkan, diganti. Jika aplikasi berjalan dalam wadah, maka versi 1.0 dari aplikasi ini harus dengan mudah berubah ke versi 1.1 tanpa kehilangan data dan masalah lainnya. Karena itu, jika Anda ingin menyimpan data, mereka harus menuliskannya. Namun, maka Anda perlu berhati-hati agar kedua wadah tersebut tidak menulis ke tempat yang sama agar tidak merusak data. Jadi, periksa apakah aplikasi dengan benar menulis data ke penyimpanan bersama.
2. Tidak perlu membagi pengiriman aplikasi. Beberapa orang berpikir bahwa sebuah wadah adalah mesin virtual yang sama. Dan kebanyakan dari mereka percaya bahwa aplikasi harus digunakan dalam wadah yang ada. Bahkan, ini juga mungkin, terutama dalam fase pengembangan, ketika ada debugging dan penyebaran yang konstan. Tetapi mereka harus memasukkan CD-ROM pengiriman kontinu untuk transfer ke departemen QA atau produksi hanya sebagai bagian dari gambar mereka sendiri. Ingat: wadah tidak tergoyahkan.
3. Tidak perlu membuat gambar besar. Gambar besar lebih sulit untuk didistribusikan. Oleh karena itu, gambar harus menyertakan hanya file dan perpustakaan yang benar-benar diperlukan untuk memulai proses aplikasi. Tidak perlu menginstal paket yang tidak perlu atau menjalankan pembaruan (pembaruan yum), yang membuat layer baru pada gambar dan menulis banyak file ke dalamnya.
4. Jangan gunakan wadah lapisan tunggal. Untuk secara efektif menggunakan sistem file multi-layer (multi-level), selalu buat layer terpisah untuk OS, untuk definisi nama pengguna, untuk konfigurasi, dan, akhirnya, untuk aplikasi itu sendiri. Sehingga akan lebih mudah untuk membuat ulang, memelihara dan mendistribusikan gambar.
5. Tidak perlu membuat gambar dari menjalankan wadah. Dengan kata lain, jangan gunakan perintah docker commit untuk membuat gambar, karena gambar seperti itu tidak akan dapat direproduksi. Sebagai gantinya, selalu gunakan Dockerfile atau alat S2I (sumber-ke-gambar) lainnya yang menyediakan reproduksibilitas. Selain itu, di Dockerfile, Anda dapat dengan mudah melacak perubahan jika Anda menyimpannya di repositori sumber (git).
6. Tidak perlu hanya menggunakan tag terbaru. Tag ini mirip SNAPSHOT untuk pengguna Maven. Karena sifat multi-layered dari sistem file kontainer, tag sangat berguna. Namun, Anda mungkin mengharapkan kejutan yang tidak menyenangkan ketika, misalnya, setelah istirahat selama berbulan-bulan, Anda memutuskan untuk mengumpulkan gambar dan tiba-tiba menemukan bahwa aplikasi tidak lagi dimulai karena lapisan induk (DARI dalam bahasa Dockerfile) telah diganti dengan versi baru yang tidak mendukung kompatibilitas mundur. Atau karena versi yang salah diambil dari cache build yang Anda tunggu-tunggu. Selain itu, tag terbaru juga harus dihindari ketika menggunakan wadah dalam produksi, karena Anda tidak akan dapat melacak versi gambar yang sedang diluncurkan.
7. Tidak perlu menjalankan lebih dari satu proses dalam satu wadah. Wadah cocok untuk satu proses (http daemon daemon, server aplikasi, DBMS). Jika tidak, Anda dapat mengalami segala macam masalah, seperti menggali log atau memperbarui proses secara terpisah.
8. Tidak perlu menyimpan kredensial dalam gambar - gunakan variabel lingkungan untuk ini. Jangan memberi resep login dan kata sandi apa pun di dalam gambar. Sebaliknya, gunakan variabel lingkungan untuk menarik data yang relevan dari sumber eksternal ke wadah. Gambar Postgres adalah contoh yang bagus tentang bagaimana melakukan ini dengan benar.
9. Tidak perlu menjalankan proses sebagai root. βSecara default, kontainer buruh pelabuhan berjalan sebagai root. (...) Namun, seiring perkembangan teknologi, opsi startup default lain yang lebih aman mungkin muncul. Dalam kondisi saat ini, persyaratan root dapat dianggap sebagai ancaman dan mungkin tidak disediakan di semua lingkungan. Untuk menentukan pengguna selain root, atas nama wadah yang akan diluncurkan, arahan USER digunakan β(Kutipan dari Bimbingan untuk Penulis Gambar Docker)
10. Tidak perlu bergantung pada alamat IP. Setiap kontainer memiliki alamat IP internal sendiri, yang dapat berubah setelah kontainer dimulai ulang. Jika aplikasi atau layanan mikro perlu berkomunikasi dengan wadah lain, gunakan variabel lingkungan untuk mentransfer nama host yang diinginkan ke nomor port dari satu wadah ke wadah lain.
Apakah kamu ingat? Sekarang Anda dapat menggunakannya dengan aman. Dan tips praktis untuk menggunakan wadah dapat ditemukan di blog kami.