Docker網絡模式說明

如今的Docker版本不推薦繼續使用Link了,而是推薦用網絡模式解決問題,簡單講一下最經常使用的幾個網絡模式,其餘我用到時候再補充。docker

bridge

-net不加參數就是默認的bridge模式,這個默認bridge模式下,容器會鏈接到默認網橋docker0,但容器與宿主機,容器與容器的網絡均是隔離的,沒法互相訪問,想要訪問須要將容器的一些端口EXPOSE,對於單容器服務而言一般已經足夠了。網絡

若是想讓容器互相通訊,須要採用自定義bridge的方法,運行命令ssh

docker network ls

能夠看到有哪些網絡已經建立,使用命令code

docker network create <my_net>

能夠建立自定義網橋,以後,運行鏡像時指定網橋並給鏡像名稱,如dockerfile

docker run -it --network <my_net> --name <container_name> <image:tag>

則指定了容器的網橋。使用同一網橋的容器互相連通,能夠經過容器名互相訪問,這樣的模式可以應對同一機器上幾個容器組合工做的場景。it

host

host模式無需多言,即讓容器和宿主機共享同一網絡,適合於多機工做的服務,須要注意的是容器內部運行程序的端口不能和宿主機有衝突,這裏建議在建立鏡像的Dockerfile中經過ENTRYPOINT來靈活定義容器內服務的端口,例如,一個跑sshd服務的容器,能夠在Dockerfile中加入以下一行做爲最後一行:class

ENTRYPOINT ["/usr/sbin/sshd","-D","-p"]

運行時,只須要使用容器

docker run -d --network host <sshd_image:tag> <port>

便可在指定端口運行,這樣就不會和主機的sshd端口衝突。file

相關文章
相關標籤/搜索