Apabila menggunakan Docker, kita akan menghadapi pelbagai masalah, salah satunya ialah ping dari rangkaian luaran tidak boleh dicapai dari dalam Docker. Masalah ini sangat biasa, tetapi ia juga serius kerana ia mungkin menghalang kita daripada menyambung kepada sumber luaran.
Terdapat banyak sebab mengapa Docker tidak boleh melakukan ping ke rangkaian luaran. Berikut ialah beberapa penyelesaian biasa.
Mula-mula, kami perlu mengesahkan sama ada tetapan rangkaian Docker adalah betul. Apabila menjalankan bekas Docker, anda selalunya perlu menentukan mod rangkaian. Jika mod rangkaian tidak dinyatakan dengan betul, Docker mungkin tidak dapat menyambung ke rangkaian luaran.
Kami boleh menggunakan arahan berikut untuk melihat tetapan rangkaian Docker:
docker network inspect
Dengan arahan ini, kami boleh melihat semua tetapan rangkaian Docker. Jika tetapan rangkaian tidak betul, kita perlu menggunakan arahan berikut untuk menetapkan semula rangkaian:
docker network create \ --driver bridge \ --subnet 192.168.0.0/16 \ mynetwork
Arahan di atas akan mencipta rangkaian Docker bernama mynetwork dan menetapkan subnet kepada 192.168.0.0/16.
Tetapan tembok api mungkin menghalang Docker daripada melakukan ping ke rangkaian luaran. Kami perlu menyemak tetapan tembok api untuk memastikan akses Docker dibenarkan.
Alat yang biasa digunakan untuk tetapan tembok api ialah iptables. Kita boleh menyemak tetapan iptables menggunakan arahan berikut:
sudo iptables -L
Jika terdapat peraturan yang menyekat akses rangkaian Docker, kita perlu menambah peraturan berikut:
sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT sudo iptables -A OUTPUT -p tcp --dport 2375 -j ACCEPT
Peraturan di atas arahan akan menambah peraturan membenarkan kebenaran akses rangkaian Docker.
Tetapan DNS boleh menghalang Docker daripada menyambung ke rangkaian luaran. Kami perlu mengesahkan bahawa tetapan DNS Docker adalah betul.
Gunakan arahan berikut untuk melihat tetapan DNS Docker:
docker exec -it container_id cat /etc/resolv.conf
Di mana container_id ialah ID bekas Docker yang akan disemak.
Jika tetapan DNS tidak betul, kami boleh menambah alamat pelayan DNS yang betul pada fail /etc/docker/daemon.json Docker:
{ "dns": ["1.1.1.1", "8.8.8.8"] }
Tetapan di atas bermakna 1.1 dan 8.8.8.8 sebagai alamat pelayan DNS.
Akhir sekali, kami perlu mengesahkan sama ada versi Docker Engine menyokong sambungan rangkaian.
Sesetengah versi lama Docker Engine mungkin mengalami masalah sambungan rangkaian. Untuk mengelakkan masalah ini, kami perlu menaik taraf kepada versi terkini Docker Engine.
Semak versi Docker Engine menggunakan arahan berikut:
docker version
Sekiranya versi tersebut bukan yang terkini, kita perlu menaik taraf Enjin Docker menggunakan arahan berikut:
sudo apt-get update sudo apt-get install docker-ce
Arahan di atas Docker Engine akan dikemas kini kepada versi terkini dan isu sambungan rangkaian akan diselesaikan.
Ringkasnya, mungkin terdapat banyak sebab mengapa ping daripada Docker tidak dapat mencapai rangkaian luaran Kami perlu menyelesaikan masalah satu demi satu mengikut penyelesaian di atas. Hanya dengan mengesahkan punca masalah anda boleh menyelesaikan masalah sambungan rangkaian dengan berkesan.
Atas ialah kandungan terperinci Sebab dan penyelesaian mengapa Docker tidak boleh ping rangkaian luaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!