基本命令查看
查看所有網絡
docker network ls
所有網路模式
網絡模式 | 配置 | 說明 |
---|---|---|
bridge模式 | --net bridge | 默認值,在Docker網橋 docker0 上爲容器創建新的網絡棧 |
none模式 | --net none | 不配置網絡,用戶可以稍後進入容器,自行配置 |
container 模式 | --net container:name/id | 容器和另外一個容器共享Network namespace。 kubernetes中的pod就是多個容器共享一個Network namespace。 |
host模式 | --net host | 容器和宿主機共享Network namespace |
用戶自定義 | --net 自定義網絡 | 用戶自己使用network相關命令定義網絡,創建容器的時候可以指定爲自己定義的網絡 |
查看一個具體的網絡的詳細信息
自定義網卡
刪除原來的所有容器
docker rm -f $(docker ps -aq)
接下來我們來創建容器
但是我們知道默認創建的容器都是 docker0網卡 的
默認我們不配置網絡,也就相當於默認值 --net bridge 使用的docker0
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat
# 上面兩個一樣
docker0網絡的特點
- 它是默認的
- 域名訪問不通
- --link 域名通了,但是刪了又不行
讓容器創建的時候使用自定義網絡
自定義創建的默認default "bridge"
自定義創建一個網絡
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
確認下
我們來啓動兩個容器測試,使用自己的 mynet
docker run -d -P --name tomcat-net-01 --net mynet tomcat
docker run -d -P --name tomcat-net-02 --net mynet tomcat
再來查看下
我們來測試ping容器名和ip試試,都可以ping通
docker exec -it tomcat-net-01 ping 192.168.0.3
docker exec -it tomcat-net-01 ping tomcat-net-02
發現,我們自定義的網絡docker都已經幫我們維護好了對應的關係
所以我們平時都可以這樣使用網絡,不使用--link效果一樣,所有東西實時維護好,直接域名 ping 通。