Praktik terbaik untuk gambar kontainer Amazon ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Praktik terbaik untuk gambar kontainer Amazon ECS

Gambar kontainer adalah seperangkat instruksi tentang cara membangun wadah. Gambar kontainer menyimpan kode aplikasi Anda dan semua dependensi yang diperlukan kode aplikasi Anda untuk dijalankan. Dependensi aplikasi mencakup paket kode sumber yang diandalkan oleh kode aplikasi Anda, runtime bahasa untuk bahasa yang ditafsirkan, dan paket biner yang diandalkan oleh kode yang ditautkan secara dinamis.

Gunakan panduan berikut saat Anda mendesain dan membuat gambar kontainer Anda:

  • Buat gambar kontainer Anda lengkap dengan menyimpan semua dependensi aplikasi sebagai file statis di dalam gambar kontainer.

    Jika Anda mengubah sesuatu dalam gambar kontainer, buat gambar kontainer baru dengan perubahan.

  • Jalankan satu proses aplikasi dalam wadah.

    Masa pakai kontainer selama proses aplikasi berjalan. Amazon ECS menggantikan proses yang macet dan menentukan di mana harus meluncurkan proses penggantian. Gambar yang lengkap membuat penerapan keseluruhan lebih tangguh.

  • Buat pegangan aplikasi AndaSIGTERM.

    Ketika Amazon ECS menghentikan tugas, pertama-tama ia mengirimkan sinyal SIGTERM ke tugas untuk memberi tahu aplikasi bahwa ia harus menyelesaikan dan mematikan. Amazon ECS kemudian mengirim SIGKILL pesan. Ketika aplikasi mengabaikanSIGTERM, layanan Amazon ECS harus menunggu untuk mengirim SIGKILL sinyal untuk menghentikan proses.

    Anda perlu mengidentifikasi berapa lama waktu yang dibutuhkan aplikasi Anda untuk menyelesaikan pekerjaannya, dan memastikan bahwa aplikasi Anda menangani SIGTERM sinyal. Penanganan sinyal aplikasi perlu menghentikan aplikasi dari mengambil pekerjaan baru dan menyelesaikan pekerjaan yang sedang berlangsung, atau menyimpan pekerjaan yang belum selesai ke penyimpanan di luar tugas ketika pekerjaan terlalu lama untuk diselesaikan.

  • Konfigurasikan aplikasi kontainer untuk menulis log ke stdout dan. stderr

    Memisahkan penanganan log dari kode aplikasi Anda memberi Anda fleksibilitas untuk menyesuaikan penanganan log di tingkat infrastruktur. Salah satu contohnya adalah mengubah sistem logging Anda. Alih-alih memodifikasi layanan Anda, dan membangun dan menerapkan gambar kontainer baru, Anda dapat menyesuaikan pengaturan.

  • Gunakan tag untuk membuat versi gambar kontainer Anda.

    Gambar kontainer disimpan dalam registri kontainer. Setiap gambar dalam registri diidentifikasi oleh tag. Ada tag yang disebutlatest. Tag ini berfungsi sebagai penunjuk ke versi terbaru dari gambar wadah aplikasi, mirip dengan HEAD di repositori git. Kami menyarankan Anda menggunakan latest tag hanya untuk tujuan pengujian. Sebagai praktik terbaik, beri tag gambar wadah dengan tag unik untuk setiap build. Kami menyarankan Anda menandai gambar Anda menggunakan git SHA untuk git commit yang digunakan untuk membangun gambar.

    Anda tidak perlu membuat image kontainer untuk setiap komit. Namun, kami menyarankan Anda membuat image kontainer baru setiap kali Anda merilis kode tertentu yang berkomitmen ke lingkungan produksi. Kami juga menyarankan Anda menandai gambar dengan tag yang sesuai dengan git commit dari kode yang ada di dalam gambar. Jika Anda menandai gambar dengan git commit, Anda dapat lebih cepat menemukan versi kode mana yang sedang dijalankan gambar.

    Kami juga menyarankan Anda mengaktifkan tag gambar yang tidak dapat diubah di Amazon Elastic Container Registry. Dengan pengaturan ini, Anda tidak dapat mengubah gambar kontainer yang ditunjuk tag. Sebaliknya Amazon ECR memberlakukan bahwa gambar baru harus diunggah ke tag baru. Untuk informasi selengkapnya, lihat Mutabilitas tag gambar di Panduan Pengguna Amazon ECR.

Saat Anda merancang aplikasi untuk dijalankan AWS Fargate, Anda harus memutuskan antara menerapkan beberapa kontainer ke dalam definisi tugas yang sama dan menerapkan kontainer secara terpisah dalam beberapa definisi tugas. Jika kondisi berikut diperlukan, sebaiknya gunakan beberapa kontainer ke dalam definisi tugas yang sama:

  • Kontainer Anda berbagi siklus hidup yang sama (yaitu, mereka diluncurkan dan dihentikan bersama-sama).

  • Kontainer Anda harus berjalan pada host dasar yang sama (yaitu, satu kontainer mereferensikan yang lain pada port localhost).

  • Kontainer Anda berbagi sumber daya.

  • Kontainer Anda berbagi volume data.

Jika kondisi ini tidak diperlukan, sebaiknya gunakan kontainer secara terpisah dalam beberapa definisi tugas. Ini memungkinkan Anda untuk menskalakan, menyediakan, dan menghentikan penyediaan wadah secara terpisah.