Gunakan jaringan virtual Docker untuk tugas-tugas Amazon ECS Linux - Amazon Elastic Container Service

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

Gunakan jaringan virtual Docker untuk tugas-tugas Amazon ECS Linux

Mode bridge jaringan hanya didukung untuk ECS tugas Amazon yang dihosting di EC2 instans Amazon.

Dengan bridge mode, Anda menggunakan jembatan jaringan virtual untuk membuat lapisan antara host dan jaringan wadah. Dengan cara ini, Anda dapat membuat pemetaan port yang memetakan ulang port host ke port kontainer. Pemetaan dapat berupa statis atau dinamis.

Diagram yang menunjukkan arsitektur jaringan menggunakan mode jaringan jembatan dengan pemetaan port statis.

Dengan pemetaan port statis, Anda dapat secara eksplisit menentukan port host mana yang ingin Anda petakan ke port kontainer. Menggunakan contoh di atas, port 80 pada host sedang dipetakan ke port 3000 pada container. Untuk berkomunikasi dengan aplikasi kontainer, Anda mengirim lalu lintas ke port 80 ke alamat IP EC2 instans Amazon. Dari perspektif aplikasi kontainer, ia melihat lalu lintas masuk di port. 3000

Jika Anda hanya ingin mengubah port lalu lintas, maka pemetaan port statis cocok. Namun, ini masih memiliki kelemahan yang sama dengan menggunakan mode host jaringan. Anda tidak dapat menjalankan lebih dari satu instantiasi tugas pada setiap host. Ini karena pemetaan port statis hanya memungkinkan satu kontainer untuk dipetakan ke port 80.

Untuk mengatasi masalah ini, pertimbangkan untuk menggunakan mode bridge jaringan dengan pemetaan port dinamis seperti yang ditunjukkan pada diagram berikut.

Diagram yang menunjukkan arsitektur jaringan menggunakan mode jaringan jembatan dengan pemetaan port dinamis.

Dengan tidak menentukan port host dalam pemetaan port, Anda dapat meminta Docker memilih port acak yang tidak digunakan dari rentang port sementara dan menetapkannya sebagai port host publik untuk wadah. Misalnya, aplikasi Node.js yang mendengarkan pada port 3000 pada kontainer mungkin diberi port nomor tinggi acak seperti 47760 pada EC2 host Amazon. Melakukan ini berarti Anda dapat menjalankan beberapa salinan wadah itu di host. Selain itu, setiap kontainer dapat diberi port sendiri di host. Setiap salinan kontainer menerima lalu lintas di pelabuhan3000. Namun, klien yang mengirim lalu lintas ke kontainer ini menggunakan port host yang ditetapkan secara acak.

Amazon ECS membantu Anda melacak port yang ditetapkan secara acak untuk setiap tugas. Hal ini dilakukan dengan secara otomatis memperbarui kelompok target load balancer dan penemuan AWS Cloud Map layanan untuk memiliki daftar alamat IP tugas dan port. Ini membuatnya lebih mudah untuk menggunakan layanan yang beroperasi menggunakan bridge mode dengan port dinamis.

Namun, salah satu kelemahan menggunakan mode bridge jaringan adalah sulit untuk mengunci komunikasi layanan ke layanan. Karena layanan mungkin ditetapkan ke port acak apa pun yang tidak digunakan, maka perlu untuk membuka rentang port yang luas antar host. Namun, tidak mudah untuk membuat aturan khusus sehingga layanan tertentu hanya dapat berkomunikasi dengan satu layanan spesifik lainnya. Layanan tidak memiliki port khusus untuk digunakan untuk aturan jaringan grup keamanan.