1. 程式人生 > >docker學習筆記(六)——docker網路

docker學習筆記(六)——docker網路

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標記,從而避免的了暴露資料庫的埠到外部的網路上。