Apabila menggunakan Docker, kami sering menghadapi masalah bahawa bekas Docker tidak boleh diakses dari luar. Ini mungkin kerana tetapan rangkaian di dalam bekas Docker tidak betul atau tembok api hos Docker menyekat sambungan rangkaian kontena. Dalam artikel ini, kita akan membincangkan beberapa kemungkinan sebab dan penyelesaian.
1. Tetapan rangkaian kontena Docker tidak betul
Bekas Docker memerlukan tetapan rangkaian yang betul untuk berkomunikasi dengan dunia luar. Jika anda menggunakan konfigurasi rangkaian Docker lalai, bekas biasanya hanya boleh diakses melalui alamat IP hos Docker. Ini bermakna jika anda cuba mengakses melalui alamat IP bekas atau nama hos, ia akan gagal.
Penyelesaian:
Satu penyelesaian ialah mencipta rangkaian Docker tersuai, yang memberi anda kawalan yang lebih baik ke atas konfigurasi rangkaian bekas. Anda boleh mencipta rangkaian Docker tersuai baharu menggunakan arahan berikut:
docker network create -d bridge my_network
Ini akan mencipta rangkaian Docker tersuai bernama "my_network". Anda kini boleh melampirkan bekas pada rangkaian ini dan memberikan bekas itu nama yang boleh dikenali untuk akses mudah.
docker run --name my_container --network my_network my_image
Gunakan arahan di atas untuk melampirkan bekas "my_container" pada rangkaian "my_network" Apabila bekas berjaya dimulakan, anda boleh menggunakan nama bekas "my_container" untuk akses luaran.
2. Tembok api hos Docker mengehadkan sambungan rangkaian kontena
Jika hos Docker anda mempunyai tembok api, ia mungkin mengehadkan sambungan rangkaian kontena. Di Linux, firewall biasanya dikawal oleh iptables, yang mungkin telah dikonfigurasikan untuk menyekat trafik masuk pada port tertentu.
Penyelesaian:
Satu penyelesaian ialah membuka port yang sepadan pada hos Docker. Anda boleh membuka port menggunakan arahan berikut:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Ini akan membuka port 80, membenarkan trafik HTTP ke dalam bekas Docker anda. Anda boleh menggunakan arahan ini untuk membuka mana-mana port pada Linux, atau anda boleh menggunakan beberapa alatan untuk memudahkan proses ini, seperti ufw.
3. Konfigurasi rangkaian dalaman bekas Docker adalah salah
Jika anda menggunakan rangkaian Docker tersuai, anda perlu memastikan bahawa konfigurasi rangkaian dalam bekas adalah betul. Jika alamat IP, topeng subnet dan get laluan lalai tidak ditetapkan dengan betul, bekas mungkin tidak dapat berkomunikasi dengan dunia luar.
Penyelesaian:
Anda boleh menggunakan arahan berikut untuk melihat konfigurasi rangkaian bekas:
docker inspect my_container
Menggunakan arahan di atas akan mengeluarkan butiran bekas, termasuk semua konfigurasi rangkaian. Sila pastikan topeng subnet dan get laluan lalai ditetapkan dengan betul.
Penyelesaian lain ialah menggunakan Docker Compose, yang membolehkan anda mengendalikan tetapan rangkaian kontena dengan lebih mudah. Docker Compose membolehkan anda mengumpulkan konfigurasi rangkaian semua bekas yang berkaitan ke dalam satu fail dan menggunakan sintaks mudah untuk menentukan perhubungan antara mereka.
Ringkasan:
Apabila menggunakan Docker, kami sering menghadapi masalah bahawa bekas Docker tidak boleh diakses dari luar. Ini mungkin kerana tetapan rangkaian di dalam bekas Docker tidak betul atau tembok api hos Docker menyekat sambungan rangkaian kontena. Kita boleh menyelesaikan masalah ini dengan mencipta rangkaian Docker tersuai, membuka port yang sepadan pada hos Docker, atau menyemak tetapan rangkaian bekas Docker. Anda juga boleh menggunakan Docker Compose untuk mengendalikan persediaan rangkaian kontena dengan lebih mudah. Melalui kaedah di atas, kita boleh menjadikan komunikasi kontena Docker dengan luar lebih stabil.
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika docker tidak boleh diakses secara luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!