Rumah >Operasi dan penyelenggaraan >Docker >Apakah yang perlu saya lakukan jika docker tidak dapat mengakses port yang dipetakan?
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.
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
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
.
Untuk menyelesaikan masalah ini, anda perlu menganalisis puncanya terlebih dahulu. Untuk masalah ini, terdapat terutamanya sebab berikut:
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
Jika statusnya Exited
, ini bermakna bekas itu tidak berjalan Kita perlu memulakan bekas melalui arahan berikut:
docker start <container_name>
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.
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>
Kemudian cari proses yang menduduki port dan tutup proses atau ubah suai portnya.
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.
Untuk masalah di atas, terdapat penyelesaian berikut:
Jika bekas tidak bermula, kita perlu mulakan bekas melalui arahan berikut :
docker start <container_name>
Kita boleh menyemak peraturan firewall melalui arahan berikut:
sudo iptables -L
Jika didapati bahawa peraturan menyekat akses, kita boleh menggunakan perintah berikut Lumpuhkan tembok api:
sudo service iptables stop
atau ubah suai peraturan tembok api untuk membenarkan akses ke port yang sepadan.
Jika port hos sudah diduduki, kita perlu mengubah suai pemetaan port dan cari port yang tidak diduduki.
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.
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!