在為客戶使用docker運行php-fpm的時候,發(fā)現(xiàn)有的可以正常連接服務器,有的不可以。經(jīng)過診斷發(fā)現(xiàn)客戶端的ip網(wǎng)段和docker創(chuàng)建的默認docker0網(wǎng)卡網(wǎng)段沖突。
docker0默認的網(wǎng)絡一般都是172.17.0.1/24或192.168.0.1/24。如果客戶端的ip是172.17.111.1,則這時候訪問基于docker部署的應用的時候,會遇到網(wǎng)絡問題。
解決的方案,有兩種。
1:使用host模式運行docker,但是需要刪除默認的docker0虛擬網(wǎng)卡。在下次docker daemon重新啟動的時候,又會重新創(chuàng)建這個docker0的虛擬網(wǎng)卡。
2:另一種解決方式,就是修改默認的docker0網(wǎng)絡配置,使用另外的網(wǎng)段給docker使用。
如下步驟,是基于方案二的解決步驟,親測可行。
#停止docker服務器,并刪除docker0網(wǎng)卡sudo systemctl restart dockersudo ip link set dev docker0 downsudo brctl delbr docker0# 創(chuàng)建自定義bridge0網(wǎng)絡,網(wǎng)段為10.255.254.1/24sudo brctl addbr bridge0sudo ip addr add 10.255.254.1/24 dev bridge0sudo ip link set dev bridge0 up#sudo ip link set dev bridge0 down ; sudo brctl delbr bridge0# 確認網(wǎng)卡已經(jīng)運行ip addr show bridge0# 創(chuàng)建docker運行的配置文件(如果文件夾不存在,手工創(chuàng)建)sudo mkdir /etc/systemd/system/docker.service.dsudo vi /etc/systemd/system/docker.service.d/docker.conf##輸入如下內(nèi)容echo "[Service]EnvironmentFile=-/etc/sysconfig/dockerExecStart=ExecStart=/usr/bin/dockerd $OPTIONS / $DOCKER_STORAGE_OPTIONS / $DOCKER_NETWORK_OPTIONS / $BLOCK_REGISTRY / $INSECURE_REGISTRY" > /etc/systemd/system/docker.service.d/docker.conf# 修改docker服務啟動默認綁定網(wǎng)卡為bridge0echo 'DOCKER_NETWORK_OPTIONS="-b=bridge0"' >> /etc/sysconfig/dockersudo systemctl daemon-reloadsudo systemctl restart docker
參考鏈接:
https://opskumu.gitbooks.io/docker/content/chapter6.html
https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options
新聞熱點
疑難解答
圖片精選