解決docker容器無法訪問宿主機網絡的問題


一、背景

    我們項目的監控體系比較完善,所以領導有要求的撥測接口,我就另外安裝了一個zabbix,為了在操作主機不影響那么多東西,我們用的是docker版。

mysql:

docker run --name zabbix-mysql-server --hostname zabbix-mysql-server -e MYSQL_ROOT_PASSWORD="123456" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_DATABASE="zabbix" -d mysql:5.6 --character-set-server=utf8 --collation-server=utf8_bin

zabbix-server:

docker run  --name zabbix-server-mysql --hostname zabbix-server-mysql --link zabbix-mysql-server:mysql -e DB_SERVER_HOST="mysql" -e MYSQL_USER="zabbix" -e MYSQL_DATABASE="zabbix" -e MYSQL_PASSWORD="123456" -v /etc/localtime:/etc/localtime:ro -d zabbix/zabbix-server-mysql

zabbix-web:

docker run --name zabbix-web-nginx-mysql --hostname zabbix-web-nginx-mysql --link zabbix-mysql-server:mysql --link zabbix-server-mysql:zabbix-server -e DB_SERVER_HOST="mysql" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_DATABASE="zabbix" -e ZBX_SERVER_HOST="zabbix-server" -e PHP_TZ="Asia/Shanghai" -p 10086:8080 -v /tmp/dev/:/dev/ -d zabbix/zabbix-web-nginx-mysql

這樣安裝好后,在web界面可以登錄上去了,根據dockerhup的說明,

zabbix-server基於docker安裝完畢!
關閉防火牆和selinux
訪問:http://宿主機IP:10086
默認用戶名:Admin
默認登陸ming
echo 1 > /proc/sys/net/ipv4/ip_forward   #容器內網絡與外網通,在宿主機上要開啟網絡轉換
ps:開啟網絡轉換容器只能ping通宿主機,不能通外網,重啟docker就OK
二、問題
    實質上無論重啟多少次,都是不能通外網。用docker inspect來對比其他通的docker也看不出有什么不同。
后來就新建網橋,就可以了。不過奇怪的是,后來我班網橋改回原來的地址,也是可以的。
先關閉docker引擎
service docker stop

關閉docker0的網卡

ip link set dev docker0 down

刪除docker0網橋

brctl delbr docker0

重建docker0網橋

brctl addbr docker0

設置IP段

ip addr add 172.17.42.2/24 dev docker0

啟動docker0網橋

ip link set dev docker0 up

重啟docker引擎

service docker start

這樣就可以了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM