


Apakah yang perlu saya lakukan jika docker tidak boleh ping hos?
Penyelesaian kepada masalah yang docker tidak boleh ping hos: 1. Ubah suai daemon.json; 2. Matikan firewall;
Persekitaran pengendalian artikel ini: sistem ubuntu16.04, Docker 20.10.11, komputer Dell G3.
Apakah yang perlu saya lakukan jika docker tidak boleh ping hos?
Mod jambatan Docker tidak boleh ping hos
Perihalan masalah:
Docker
Mod rangkaian terbahagi kepada empat jenis Secara umumnya, apabila kita tidak menetapkannya, lalainya ialah bridge
tunggal mod jambatan, dan bekas menggunakan bebas network Namespace
, dan bersambung ke docker0
kad rangkaian maya. Berkomunikasi dengan hos melalui docker0
bridge dan Iptables nat
konfigurasi jadual.
Pada masa ini, uji pada mesin benteng, gunakan busybox
untuk menguji:
# 拉取镜像 docker pull busybox # 运行容器 docker run -itd --name busy_bridge busybox
Perintah docker network inspect bridge
untuk melihat rangkaian:
Konfigurasi rangkaian berjaya , masukkan ke dalam bekas, lihat ip
, anda dapat melihat bahawa ip
telah diperuntukkan, tetapi ping
gagal apabila menyambung ke rangkaian luaran dan tidak boleh menyambung ke rangkaian luaran:
Tetapi di tempatan anda sendiri atau Ujian yang sama telah dijalankan di Alibaba Cloud dan didapati rangkaian boleh disambungkan Apakah punca masalah ini?
Analisis masalah:
Selepas mencari maklumat di Internet, ramai orang memulakan semula docker
dan kemudian mereka boleh menyambung Biasanya kerana konfigurasi tertentu diubah suai dan kemudian memulakan semula tidak berfungsi di sini. Terdapat beberapa pengubahsuaian umum, sila uji satu demi satu di bawah:
- Pengubahsuaian
daemon.json
Bekas tidak boleh mengakses mesin hos. Kerana segmen rangkaian yang diperuntukkan oleh jambatan bercanggah dengan hos, anda perlu mengubah suai daemon.json
untuk menentukan peruntukan Gunakan perintah vim /etc/docker/daemon.json
untuk masuk dan menambah:
{"bip":"172.16.10.1/24"}
Walaupun. anda boleh memulakan semula docker
dan mencipta Akses bekas, walau bagaimanapun, tiada konflik sama sekali antara ip
yang asalnya diperuntukkan oleh hos benteng dan bekas, jadi kaedah ini tidak berfungsi.
- Matikan tembok api
Bekas tidak boleh mengakses hos melalui jambatan, dan oleh itu tidak boleh mengakses rangkaian luaran menyekat akses, supaya ia boleh dimatikan atau membuka port tertentu. Diuji pada pelayan, menghidupkan tembok api dan mendapati bahawa bekas itu memang tidak dapat mengakses halaman utama Baidu dan hos Selepas menutup tembok api dan memulakan semula docker
, bekas itu boleh mengakses seperti biasa.
Namun, tembok api pada mesin benteng pada asalnya dimatikan, jadi kaedah ini tidak berguna.
- Ubah suai
sysctl.conf
docker
Rangkaian dalaman hos adalah perkara biasa, tetapi sambungan dengan hos lain adalah tidak sah dan hos lain tidak boleh menyambungdocker
Port yang dipetakan pada hos tidak boleh menyambung ke hos luaran dalam docker
Gunakan perintah docker info
untuk melihat maklumat dan mencari ralat berikut:
WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
Gunakan. arahan vim /etc/sysctl.conf
untuk mengedit fail konfigurasi dan tambahkan yang berikut pada Kod fail:
net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1
kemudian gunakan arahan systemctl restart network
untuk memulakan semula rangkaian, semak docker info
sekali lagi, dan amaran hilang . Tetapi ia masih tidak berguna Bekas pada mesin benteng masih tidak boleh mengakses mesin hos melalui jambatan dan tidak boleh mengakses rangkaian luaran.
- Tetapkan semula jambatan
Selepas menggunakan arahan yum install bridge-utils
untuk memasang alat, gunakan brctl show
untuk melihat jambatan dan anda akan cari:
Gunakan perintah docker network create [网桥名]
untuk mencipta jambatan baharu dan ketahui sama ada bridge id
atau 8000.0000000000
yang dijana dijana pada jambatan baharu dan semak semula di sana tiada perubahan, menunjukkan bahawa ia mungkin merupakan persoalan.
Uji sekali lagi. Pada masa ini, jambatan ip
ialah 172.17.0.1
dan bekas ip
ialah 172.0.0.2
Didapati bahawa fungsi hos boleh ping
bersambung ke jambatan, tetapi tidak boleh disambungkan bekas, dan bekas tidak boleh menyambung ke jambatan Menyambung ke mesin hos, apatah lagi rangkaian luaran, jadi mesti ada masalah dengan jambatan rangkaian di sini.
问题解决
这里docker network
生成新的网桥不行,说明docker
的network
存在问题,我们利用刚才下载的bridge-utils
来创建网桥。
首先暂停docker
服务,利用指令:
service docker stop
添加网桥:
brctl addbr br0
添加ip
字段:
ip addr add 172.16.0.1/24 dev br0
启用网桥br0
:
ip link set dev br0 up
查看网络br0
:
修改docker
默认网桥:
vim /etc/docker/daemon.json
添加字段:
"bridge":"br0"
重启docker
:
service docker start
此时查看网桥:
在没有挂载容器前,依旧是8000.000000000000
。运行测试容器:
docker run -itd --name busy_test busybox
查看Apakah yang perlu saya lakukan jika docker tidak boleh ping hos?:
此时容器挂载在网桥上了,再次查看网桥id
:
说明已经其作用,进入测试容器内部,Apakah yang perlu saya lakukan jika docker tidak boleh ping hos?:
成功!
补充:这里使用docker network
新建网桥,没有用,发现新建网桥挂载容器后,其bridge id
依旧不变,没有起作用,说明堡垒机上的docker network
可能存在问题。
问题补充:
上面的问题是创建自定义网桥,然后在自定义网桥上连接容器a
和b
,结果宿主机无法ping
通a
、b
,且进入容器内部后,两个容器无法ping
通自定义网络,但能彼此相通。
查了很多资料,发现了这篇文章。博主说问题原因是系统内核的网桥模块bridge.ko
加载失败导致,解决问题的方案是升级内核或升级系统。
升级centos
内核参考这篇。
升级完成后,重装Docker
,自定义网桥和容器,成功!不再有网络问题。
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika docker tidak boleh ping hos?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Untuk mendapatkan versi Docker, anda boleh melakukan langkah -langkah berikut: Jalankan arahan Docker "Docker -version" untuk melihat versi klien dan pelayan. Untuk MAC atau Windows, anda juga boleh melihat maklumat versi melalui tab versi Docktop GUI atau menu desktop Docker.

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.

Kaedah untuk melihat log Docker termasuk: Menggunakan arahan Log Docker, contohnya: Log Docker Container_Name Gunakan arahan docker exec untuk menjalankan /bin /sh dan lihat fail log, contohnya: docker exec -it container_name /bin /sh; Cat /var/log/container_name.log Gunakan arahan log docker-compose compose, contohnya: docker-compose -f docker-com

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Anda boleh membina repositori peribadi Docker untuk menyimpan dan menguruskan imej kontena dengan selamat, memberikan kawalan dan keselamatan yang ketat. Langkah -langkah termasuk: mewujudkan repositori, memberikan akses, mengerahkan repositori, menolak imej, dan menarik imej. Kelebihan termasuk keselamatan, kawalan versi, mengurangkan trafik rangkaian dan penyesuaian.

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)
