MySQL發生Can''t connect to MySQL server on localhost (10061)解決方法
阿新 • • 發佈:2020-11-26
docker0問題:不支援容器名互相連線訪問!
檢視所有的docker網路
docker network ls
網路模式
bridge:橋接docker預設,自定義的網路也使用bridge模式。
none:不配置網路。
host:和宿主機共享網路。
container:容器內網路連通!用的少!侷限很大!
docker network幫助資訊
[root@localhost ~]# docker network --help Usage: docker network COMMAND Manage networks Commands: connect Connect a container to a network create Create a network disconnect Disconnect a container from a network inspect Display detailed information on one or more networks ls List networks prune Remove all unused networks rm Remove one or more networks
測試自定義網路
刪除所有容器,保證乾淨環境。
docker rm -f $(docker ps -a -q)
回到最初的3個網絡卡
之前直接啟動的的命令
docker run -d -P --name tomcat01 tomcat
#直接啟動的容器預設是docker0網路,其實預設省略了--net bridge引數
docker0特點,預設域名不能訪問,--link需要互相打通才能相互通訊,不建議使用。
自定義網路
再檢視docker network create --help幫助資訊
docker network create --help
建立一個自定義網路
--driver bridge #預設為橋接,可不寫
--subnet 192.168.0.0/16 #子網
--gateway 192.168.0.1 #路由
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 nettest
檢視建立的網路
docker network ls
檢視建立網路的詳細資訊
docker network inspect nettest
到此自己的網路就建立好了。
容器走自定義網路
測試啟動2個容器
docker run -d -P --name tomcat-net-01 --net nettest tomcat
docker run -d -P --name tomcat-net-02 --net nettest tomcat
再次檢視自定義網路的詳細資訊
docker network inspect nettest
此時自定義網路下面就有了我們的容器資訊。
測試域名ping
docker exec -it tomcat-net-01 ping 192.168.0.3
docker exec -it tomcat-net-01 ping tomcat-net-02
此時用容器的名稱可以互相Ping通了。
自定義的網路修復了docker0的缺陷。
網路間通訊
網路聯通,使2張網下的容器也可以互相通訊。
啟動2個容器,不指定網路。測試2個網路下是否可以互通。
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat
#測試
docker exec -it tomcat01 ping tomcat-net-01
如何打通docker0和自定義的網路?
網路之間如何互相打通?
連線1個容器到1個網路
docker network --help
檢視幫助資訊
docker network connect --help
測試打通,檢視詳細資訊
docker network connect nettest tomcat01
檢視詳細資訊,連通後發生了什麼?
docker network inspect nettest
連通之後就將tomcat01放到了nettest網路下?
測試通訊
官方:1個容器2個IP
方法:容器和網路打通解決2張網路下容器通訊。
測試tomcat02
tomcat02與自定義網路nettest沒有打通,所以無法ping通。
結論:假設要跨網路通訊,就需要使用docker network connect打通!