Praktik Terbaik untuk Image Kontainer Amazon ECS - Amazon Elastic Container Service

View a markdown version of this page

Praktik Terbaik untuk Image 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 Image Kontainer Amazon ECS

Gambar wadah adalah sekumpulan 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 bergantung pada kode aplikasi Anda, runtime bahasa untuk bahasa yang ditafsirkan, dan paket biner yang bergantung pada kode yang ditautkan secara dinamis Anda.

Gunakan panduan berikut saat Anda merancang 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 wadah, buat gambar kontainer baru dengan perubahan tersebut.

  • Jalankan proses aplikasi tunggal dalam wadah.

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

  • Buat penanganan aplikasi AndaSIGTERM.

    Ketika Amazon ECS menghentikan tugas, pertama-tama ia mengirimkan sinyal SIGTERM ke tugas untuk memberi tahu aplikasi bahwa ia perlu selesai dan dimatikan. 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 membutuhkan waktu 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 serta menerapkan image 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 kontainer dengan tag unik untuk setiap build. Kami menyarankan Anda menandai gambar Anda menggunakan git SHA untuk komit git yang digunakan untuk membangun gambar.

    Anda tidak perlu membuat image kontainer untuk setiap komit. Namun, sebaiknya Anda membuat image kontainer baru setiap kali Anda merilis komit kode tertentu ke lingkungan produksi. Kami juga menyarankan Anda menandai gambar dengan tag yang sesuai dengan komit git 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 wadah yang ditunjuk tag. Sebaliknya Amazon ECR menegakkan bahwa gambar baru harus diunggah ke tag baru. Untuk informasi selengkapnya, lihat Mutabilitas tag gambar di Panduan Pengguna Amazon ECR.

Saat merancang aplikasi untuk dijalankan AWS Fargate, Anda harus memutuskan antara menerapkan beberapa container 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).

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

  • Wadah Anda berbagi sumber daya.

  • Kontainer Anda berbagi volume data.

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