Apakah yang perlu saya lakukan jika docker tidak dapat mengakses port yang dipetakan?

PHPz
Lepaskan: 2023-04-18 14:44:33
asal
4205 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, teknologi kontena semakin popular. Antaranya, Docker, sebagai salah satu penyelesaian kontena yang paling popular, telah digunakan secara meluas dalam kedua-dua persekitaran pembangunan dan pengeluaran. Walau bagaimanapun, apabila menggunakan Docker, kadangkala kita menghadapi masalah tidak dapat mengakses port yang dipetakan Artikel ini akan membincangkan masalah ini dan penyelesaiannya secara terperinci.

Penerangan Masalah

Apabila menjalankan bekas Docker, kita boleh menggunakan pilihan -p atau --publish untuk memetakan port di dalam bekas ke port hos. Sebagai contoh, kita boleh memetakan port 8080 di dalam bekas ke port 8000 pada hos dengan arahan seperti berikut:

docker run -d -p 8000:8080 myimage
Salin selepas log masuk

Walau bagaimanapun, dalam beberapa kes, kami akan mendapati port yang dipetakan tidak boleh diakses. Contohnya, dalam contoh di atas, kami mungkin tidak dapat mengakses aplikasi di dalam bekas melalui http://localhost:8000.

Analisis Punca

Untuk menyelesaikan masalah ini, anda perlu menganalisis puncanya terlebih dahulu. Untuk masalah ini, terdapat terutamanya sebab berikut:

Kontena tidak dimulakan

Apabila kami memetakan port, kami sebenarnya mengikat port di dalam kontena kepada hos tidak bermula, pelabuhan tidak boleh terikat. Kita boleh menyemak status bekas melalui arahan berikut:

docker ps -a
Salin selepas log masuk

Jika statusnya Exited, ini bermakna bekas itu tidak berjalan Kita perlu memulakan bekas melalui arahan berikut:

docker start <container_name>
Salin selepas log masuk
Salin selepas log masuk

Sekatan Tembok Api Hos

Dalam sesetengah kes, kami tidak boleh mengakses aplikasi melalui port hos Ini mungkin kerana tembok api hos menyekat akses. Kita boleh menyelesaikan masalah ini dengan mematikan atau mengubah suai peraturan tembok api.

Port hos sudah diduduki

Apabila kami menggunakan pilihan -p, jika port hos sudah diduduki, kami tidak boleh mengikat port kontena kepada hos. Kita boleh menyemak penghunian port melalui arahan berikut:

sudo lsof -i :<port>
Salin selepas log masuk

Kemudian cari proses yang menduduki port dan tutup proses atau ubah suai portnya.

IP pendengaran di dalam bekas tidak betul

Dalam sesetengah kes, kami mungkin telah menetapkan alamat IP untuk pemantauan aplikasi dalam bekas, tetapi alamat IP ini tidak betul, mengakibatkan ketidakupayaan untuk mengakses permohonan itu. Kami perlu memastikan bahawa aplikasi mendengar pada semua alamat IP atau alamat IP mendengar ditetapkan dengan betul.

Penyelesaian

Untuk masalah di atas, terdapat penyelesaian berikut:

Mulakan bekas

Jika bekas tidak bermula, kita perlu mulakan bekas melalui arahan berikut :

docker start <container_name>
Salin selepas log masuk
Salin selepas log masuk

Semak peraturan firewall

Kita boleh menyemak peraturan firewall melalui arahan berikut:

sudo iptables -L
Salin selepas log masuk

Jika didapati bahawa peraturan menyekat akses, kita boleh menggunakan perintah berikut Lumpuhkan tembok api:

sudo service iptables stop
Salin selepas log masuk

atau ubah suai peraturan tembok api untuk membenarkan akses ke port yang sepadan.

Ubah suai pemetaan port

Jika port hos sudah diduduki, kita perlu mengubah suai pemetaan port dan cari port yang tidak diduduki.

Laraskan alamat IP pendengaran

Jika alamat IP yang dipantau oleh aplikasi di dalam bekas tidak betul, kami perlu memastikan aplikasi memantau semua alamat IP atau menetapkan alamat IP pendengaran dengan betul. Sebagai contoh, kita boleh menetapkan alamat pendengaran aplikasi kepada 0.0.0.0 supaya ia boleh mendengar semua alamat IP.

Ringkasan

Ketidakupayaan untuk mengakses port yang dipetakan adalah masalah biasa apabila menggunakan Docker, tetapi ia boleh diselesaikan dengan mudah selagi kita mencari punca masalah dan mengambil penyelesaian yang sesuai. Melalui pengenalan artikel ini, saya percaya pembaca telah mempelajari cara menangani masalah tersebut dan meningkatkan lagi pengalaman dan kemahiran mereka dalam menggunakan Docker.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika docker tidak dapat mengakses port yang dipetakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!