docker 容器的網絡配置

   Docker 中的網絡功能介紹linux

默認狀況下,容器能夠創建到外部網絡的鏈接,可是外部網絡沒法鏈接到容器。web

Docker 容許經過外部訪問容器或容器互聯的方式來提供網絡服務docker

外部訪問容器:shell

容器中能夠運行一些網絡應用,要讓外部也能夠訪問這些應用,能夠經過  -P  或  -p  參數來指定端口映射。網絡

練習環境:運行一個容器,提供web服務和ssh服務ssh

宿主機啓用路由轉發(net.ipv4.ip_forward=1)ide



wKiom1jKqPTgGyzWAAAnX8XNGyo406.png

準備工做 安裝docker 工具

 

wKioL1jKqPSQ0kueAAAIjjTlnoI287.png

安裝目錄下的全部rpm包 (rpm包是提早下載好的,也能夠鏈接網絡上的公共YUM倉庫)spa


wKiom1jKqPTB8jiGAAAG61-6BeM742.png

解壓已經作好的鏡像3d



wKioL1jKqPWyy847AAAUAtVLrMQ446.png

查看解壓完成的鏡像是否正確


wKioL1jKqPXAKrapAAAfZU6MJTk111.png

 P(大寫)標記時,Docker 會隨機映射一個隨機的端口到內部容器開放的網絡端口。

注:-P使用時須要指定--expose選項或dockerfile中用expose指令容器要暴露的端口,指定須要對外提供服務的端口

使用  docker ps  能夠看到,本地主機的32770被映射到了容器的22端口,本地主機的32769被映射到了容器的80端口,本地主機的32768被映射到了容器的443 端口。

 


wKiom1jKqPWhWD8OAAAYjNefj3o004.png

驗證是隱射到了端口號32770上 採用ssh遠程登陸的方式驗證


wKiom1jKqPbRazWKAAEH6eubXN8994.png

驗證經過32769是否能夠訪問容器的 web



wKioL1jKqPfh5VubAABXdaR6RPQ027.png

docker -p(小寫)能夠指定所要映射的端口號


wKioL1jKqPfBia6tAAAmsNZugKA550.png




wKiom1jKqPjyQUcCAABZxJ2SQLA356.png

經過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 指定,默認設置。


wKiom1jKqPnig0sWAAAOVwhQ7YA849.png

host 模式

若是啓動容器的時候使用 host 模式,那麼這個容器將不會得到一個獨立的 Network Namespace,而是和宿主機共用一個 Network Namespace。容器將不會虛擬出本身的網卡,配置本身的 IP 等,而是使用宿主機的 IP 和端口。


wKioL1jKqPmgJigsAAASH017gGE374.png


wKiom1jKqPnzaMvWAAAJDCfFd_k282.png

防火牆開啓80端口


wKioL1jKqPrgfcRpAAF2nJNXIOY257.png

dockerhost模式是和宿主機公用一個IP地址 因此訪問是直接訪問宿主機IP地址就等於訪問docker 容器的web服務了

 

 

container 模式

這個模式指定新建立的容器和已經存在的一個容器共享一個 Network Namespace,而不是和宿主機共享。新建立的容器不會建立本身的網卡,配置本身的 IP,而是和一個指定的容器共享 IP、端口範圍等。一樣,兩個容器除了網絡方面,其餘的如文件系統、進程列表等仍是隔離的。兩個容器的進程能夠經過 lo 網卡設備通訊。 


wKiom1jKqPqAq2EkAAAsEPSmFKg140.png

wKioL1jKqPuRbSn5AAAwalP9sKU360.png

引用剛纔建立的容器發現容器的 ip地址和開始建立的同樣

相關文章
相關標籤/搜索