Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Sebab dan penyelesaian mengapa Docker tidak boleh ping rangkaian luaran

Sebab dan penyelesaian mengapa Docker tidak boleh ping rangkaian luaran

PHPz
PHPzasal
2023-04-17 16:42:505273semak imbas

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.

  1. Semak tetapan rangkaian

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.

  1. Semak tetapan tembok api

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.

  1. Semak tetapan DNS

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.

  1. Semak versi Docker Engine

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!

Kenyataan:
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