Dalam beberapa tahun kebelakangan ini, teknologi Docker telah berkembang pesat dalam bidang pengkomputeran awan dan telah digunakan secara meluas. Teknologi kontena Docker bukan sahaja membantu pembangun menggunakan aplikasi dengan mudah, tetapi juga dengan cepat membina persekitaran penggunaan yang boleh diulang. Walau bagaimanapun, apabila menggunakan Docker, anda kadangkala menghadapi beberapa masalah, seperti pemetaan port Docker tidak boleh diakses. Artikel ini akan memperkenalkan punca dan penyelesaian kepada situasi ini, dengan harapan dapat membantu pembangun menggunakan Docker.
1. Apakah itu pemetaan port Docker
Dalam bekas Docker, untuk memudahkan akses luaran, selalunya perlu mendedahkan port perkhidmatan di dalam bekas kepada hos. Pada masa ini, anda perlu menggunakan fungsi pemetaan port Docker.
Pemetaan port docker boleh memetakan port dalam bekas ke port pada hos. Sebagai contoh, petakan port 80 dalam bekas ke port 8080 pada hos, supaya apabila mengakses port 8080 pada hos, anda boleh mengakses perkhidmatan port 80 dalam bekas.
2. Mengapakah pemetaan pelabuhan Docker tidak boleh diakses
Apabila menggunakan Docker, kadangkala kita akan mendapati bahawa perkhidmatan di dalam bekas tidak boleh diakses Pemetaan pelabuhan Docker ditetapkan dengan betul. Jika pemetaan port Docker tidak ditetapkan dengan betul, ia akan mengakibatkan tidak boleh diakses.
Sebab umum mengapa pemetaan pelabuhan Docker tidak boleh diakses termasuk yang berikut:
Dalam bekas Docker Secara Dalaman, pembangun biasanya menentukan alamat tempat perkhidmatan mendengar Lalai ialah 127.0.0.1, yang bermaksud ia hanya boleh diakses secara setempat. Jika alamat mendengar perkhidmatan tidak ditukar, walaupun port dipetakan pada hos, perkhidmatan dalam bekas tidak boleh diakses.
Jika tembok api hos menyekat port yang dipetakan oleh Docker, maka perkhidmatan kontena Docker tidak boleh diakses daripada hos.
Perkhidmatan yang dijalankan dalam bekas Docker mungkin berjalan pada port In yang tidak standard kes ini, adalah perlu untuk Memetakan semasa pemetaan port. Jika port yang dipetakan tidak konsisten dengan port perkhidmatan yang berjalan dalam bekas, perkhidmatan itu tidak boleh diakses.
Jika bekas Docker tidak berjalan dengan betul, port yang dipetakan tidak akan dapat diakses. Anda boleh menyelesaikan masalah dengan melihat bekas Docker menjalankan log.
3. Bagaimana untuk menyelesaikan masalah pemetaan port Docker yang tidak boleh diakses
Atas sebab di atas mengapa pemetaan port Docker tidak boleh diakses, penyelesaian berikut boleh diambil:
Di dalam bekas Docker, apabila memantau port perkhidmatan, anda boleh menggunakan alamat 0.0.0.0, yang bermaksud anda boleh menerima permintaan daripada mana-mana alamat IP.
Sebagai contoh, dalam Node.js, kod untuk menukar alamat pendengaran daripada 127.0.0.1 kepada 0.0.0.0 adalah seperti berikut:
app.listen(3000, '0.0.0.0', function() { console.log('Server listening on port 3000'); });
Dalam sistem Linux, anda boleh membuka port melalui arahan berikut:
iptables -I INPUT -p tcp --dport 映射的端口号 -j ACCEPT
Sebagai contoh, arahan untuk membuka kebenaran akses untuk port 8080 adalah seperti berikut:
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
docker ps
docker run -p 8080:80 nginx
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika pemetaan port docker linux tidak boleh diakses. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!