docker默認有3中網絡bridge、host、none
bridge橋接網絡
docker安裝成功後,會在宿主機創建一個網橋docker0,可以將網橋docker0理解爲一個虛擬的交換機
運行一個nginx容器
docker run --name web -d nginx
安裝bridge-utils
yum install bridge-utils
看上圖,網橋docker0連接了兩個端口vethe1db678、if10。
可以認爲vethe1db678、if10是一對網卡,這對網卡之間可以通信,並且一端網卡插在docker0交換機中,另一端連接nginx容器,宿主機和容器就能通信。
查看容器ip docker inspect web
訪問容器
curl 172.17.0.2
創建一個busybox
docker run -d --name=busybox busybox /bin/sh -c "while true; do sleep 3600;done"
docker exec -it busybox /bin/sh
在busybox中可以ping通另一個容器nginx
ping 172.17.0.2
容器間通信過程:
創建busybox後,也會再創建一對網卡vethe447c46、if14,一端插在交換機docker0上,一端連接busybox容器。
busybox的請求發送到docker0後,docker0將請求轉到nginx中。
Host網絡表示容器使用物理機的網絡命名空間。物理機正在使用的端口,容器不能使用;容器正在使用的端口,物理機不能使用
none即沒有網絡,容器與宿主機、容器與容器之間無法通信。用於運行一些不需要網絡的任務,比如說批處理數據。