Docker 中的網絡功能介紹linux
默認狀況下,容器能夠創建到外部網絡的鏈接,可是外部網絡沒法鏈接到容器。web
Docker 容許經過外部訪問容器或容器互聯的方式來提供網絡服務docker
外部訪問容器:shell
容器中能夠運行一些網絡應用,要讓外部也能夠訪問這些應用,能夠經過 -P 或 -p 參數來指定端口映射。網絡
練習環境:運行一個容器,提供web服務和ssh服務ssh
宿主機啓用路由轉發(net.ipv4.ip_forward=1)ide
準備工做 安裝docker 工具
安裝目錄下的全部rpm包 (rpm包是提早下載好的,也能夠鏈接網絡上的公共YUM倉庫)spa
解壓已經作好的鏡像3d
查看解壓完成的鏡像是否正確
–P(大寫)標記時,Docker 會隨機映射一個隨機的端口到內部容器開放的網絡端口。
注:-P使用時須要指定--expose選項或dockerfile中用expose指令容器要暴露的端口,指定須要對外提供服務的端口
使用 docker ps 能夠看到,本地主機的32770被映射到了容器的22端口,本地主機的32769被映射到了容器的80端口,本地主機的32768被映射到了容器的443 端口。
驗證是隱射到了端口號32770上 採用ssh遠程登陸的方式驗證
驗證經過32769是否能夠訪問容器的 web
docker -p(小寫)能夠指定所要映射的端口號
經過xshell驗證是否能夠經過指定端口號訪問容器的ssh (xshell是一款很是好用的遠程鏈接工具 鏈接穩定支持linux絕大多數命令 還能夠快速上傳本地文件很是方便 本人親測有效)
Docker 網絡配置
Docker 四種網絡模式
docker run 建立 Docker 容器時,能夠用 --net 選項指定容器的網絡模式,Docker 有如下 4 種網絡模式:
host 模式,使用 --net=host 指定。
container 模式,使用 --net=container:NAMEorID 指定。
none 模式,使用 --net=none 指定。
bridge 模式,使用 --net=bridge 指定,默認設置。
若是啓動容器的時候使用 host 模式,那麼這個容器將不會得到一個獨立的 Network Namespace,而是和宿主機共用一個 Network Namespace。容器將不會虛擬出本身的網卡,配置本身的 IP 等,而是使用宿主機的 IP 和端口。
防火牆開啓80端口
docker 的host模式是和宿主機公用一個IP地址 因此訪問是直接訪問宿主機IP地址就等於訪問docker 容器的web服務了
這個模式指定新建立的容器和已經存在的一個容器共享一個 Network Namespace,而不是和宿主機共享。新建立的容器不會建立本身的網卡,配置本身的 IP,而是和一個指定的容器共享 IP、端口範圍等。一樣,兩個容器除了網絡方面,其餘的如文件系統、進程列表等仍是隔離的。兩個容器的進程能夠經過 lo 網卡設備通訊。
引用剛纔建立的容器發現容器的 ip地址和開始建立的同樣