docker學習筆記(六)——docker網路
阿新 • • 發佈:2019-02-09
docker網路主要分為兩塊——容器對外服務和容器內部服務
對外服務很好理解,比如我啟動了一個mysql的容器,然後讓別的機器可以連線到這個mysql,就是對外服務;容器內部服務很好理解,就是幾個容器之間的互相通訊。
1 容器對外服務
當容器內執行一些網路應用,要讓外部訪問這些應用時,可以通過 -P
或-p
引數來指定埠對映。
使用 -P
對映時,Docker會隨機對映一個49000 ~ 49900 的埠至容器內部開放的埠:
docker run -d -P --name mysql mysql:5.6
通過docker ps
可以看到埠對映關係。可以通過對映在宿主機的埠來訪問對應容器內的服務。
我們使用-P
來對映到隨機的一個埠
對映到指定宿主機的埠:
docker run -d -p 3306:3306 --name mysql mysql:5.6
對映到指定地址的指定埠,以127.0.0.1為例:
docker run -d -p 127.0.0.1:3306:3306 --name mysql mysql:5.6
對映到指定地址的任意埠,以127.0.0.1為例:
docker run -d -p 127.0.0.1::3306 --name mysql mysql:5.6
檢視對映埠配置:
docker port mysql 3306
2 容器間相互通訊
第一種方法可以通過對映宿主機的埠實現容器的互聯,即把宿主機當作中間的橋樑
第二種方法是容器的連線(link),推薦這一種方式
使用 --link
引數可以讓容器之間安全的進行互動。
建立一個數據庫容器:
docker run -d --name mysqldb mysql:5.6
建立一個web容器並和資料庫容器建立連線:
docker run -d --name Webapp –p 8000:8080 --link mysqldb:MySQL tomcat
mysqldb容器和web容器建立互聯關係。
--link
引數的格式為--link name:alias
,其中name是要連線的容器名稱,alias是這個連線的別名。
可以使用docker ps(PORT欄位)
Docker在兩個容器之間建立了安全隧道,而且不用對映它們的埠到宿主機上。在啟動mysqldb的時候並沒有使用-p
和-P
標記,從而避免的了暴露資料庫的埠到外部的網路上。