如今的Docker版本不推薦繼續使用Link了,而是推薦用網絡模式解決問題,簡單講一下最經常使用的幾個網絡模式,其餘我用到時候再補充。docker
-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模式無需多言,即讓容器和宿主機共享同一網絡,適合於多機工做的服務,須要注意的是容器內部運行程序的端口不能和宿主機有衝突,這裏建議在建立鏡像的Dockerfile中經過ENTRYPOINT來靈活定義容器內服務的端口,例如,一個跑sshd服務的容器,能夠在Dockerfile中加入以下一行做爲最後一行:class
ENTRYPOINT ["/usr/sbin/sshd","-D","-p"]
運行時,只須要使用容器
docker run -d --network host <sshd_image:tag> <port>
便可在指定端口運行,這樣就不會和主機的sshd端口衝突。file