前幾次講了bridge 和bridge network,今天這次繼續說docker的網路,docker提供一個web服務,如何讓你的容器的web服務供外邊的公網訪問到。

nginx為例

  • 本地創建一個nginx的服務,nginx這個我就不介紹了,大家baidu吧,現在很多的互聯網公司都用它。

sudo service docker restart
sudo docker run --name web -d nginx

現在雖然創建了一個nginx服務,想訪問,但是沒辦法訪問,如果真要訪問還得藉助exec的方式來訪問。

sudo docker exec -it web /bin/sh
exit

  • 查看naginx 的ip

sudo docker network inspect bridge

  • ping ip

ping 172.17.0.2

  • 訪問

telnet 172.17.0.2 80
curl http://172.17.0.2

nginx映射到本地埠

  • 命令: -p 80:80

sudo docker stop web
sudo docker rm web
sudo docker run --name web -d -p 80:80 nginx
curl http://127.0.0.1
#可以看到eth1的ip地址是 172.28.128.3
ip a

把容器內的80埠映射到本地的80埠,也就說宿主機的區域網就可以訪問80埠了,如果宿主機是阿里雲或者騰訊雲也就可以訪問了。

原理圖

PS:這裡不通過公網伺服器演示了,基本用阿里雲或者騰訊雲都有公有IP的直接映射就可以了用了,通過這種方式我們知道很多的服務都是提供埠的,例如:tomcat8080埠,mysql3306埠(-p 3306:3306),創建完容器後講埠和本機的埠進行映射就可以了直接訪問了。


推薦閱讀:
相关文章