Docker 埠對映與容器互聯

2021-09-19 16:23:16 字數 1610 閱讀 2315

在實踐中, 經常會碰到需要多個服務元件容器共同協作的情況, 這往往需要多個容器之間能夠互相訪問到對方的服務。docker 除了通過網路訪間外, 還提供了兩個很方便的功能來滿足服務訪問的基本需求:乙個是允許對映容器內應用的服務埠到本地宿主主機;另 乙個是互聯機制實現多個容器間通過容器名來快速訪問。

在啟動容器的時候, 如果不指定對應引數, 在容器外部是無法通過網路來訪問容器內的網路應用和服務的。

當容器中執行一些網路應用, 要讓外部訪問這些應用時, 可以通過-p或-p引數來指定埠對映。當使用平(大寫的)標記時, docker 會隨機對映乙個 49000-49900 的埠到內部容器開放的網路埠:

同樣, 可以通過 docker logs 命令來檢視應用的資訊:

-p (小寫的)則可以指定要對映的埠,並且,在一 個指定埠上只可以繫結 一 個容器。

使用hostport: containerport格式本地的5000埠對映到容器的5000埠,可以執行如下命令:

可以使用ip:hostpart:containerport格式指定對映使用乙個特定位址,比如localhost位址127.0.0.1:

使用ip::containerport繫結localhost的任意埠到容器的5000埠,本地主機會自動分配一 個埠:

還可以使用udp標記來指定 udp埠:

docker port 7b3cac5ba43e

docker port 7b3cac5ba43e 5000

容器有自己的內部網路和ip位址,使用docker [container) inspect+容器id可以獲取容器的具體資訊。

容器的互聯(linking)是一種讓多個容器中的應用進行快速互動的方式。它會在源和接收容器之間建立連線關係,接收容器可以通過容器名快速訪問到源容器,而不用指定具體的i位址。

連線系統依據容器的名稱來執行。因此,首先需要自定義乙個好記的容器命名。雖然當建立容器的時候,系統缺省會分配乙個名字,但自定義命名容器有兩個好處:

使用--name標記可以為容器自定義命名:

在執行docker [container] run的時候如果新增--rm標記,則容器在終止後會立刻刪除。注意,- -rm 和-d引數不能同時使用。

使用--link引數可以讓容器之間安全地進行互動。下面先建立乙個新的資料庫容器:

刪除之前建立的web容器:

docker rm -f web

然後建立乙個新的web容器,並將它連線到db容器:

此時,db容器和web容器建立互聯關係。--link引數的格式為--link name:alias, 其中name是要鏈結的容器的名稱 ,alias是別名。

進入web容器,檢視hosts,ping db

使用者可以鏈結多個子容器到父容器, 比如可以鏈結多個web到同乙個db容器上。

在生產環境中, 網路方面的需求更加複雜和多變, 包括跨主機甚至跨資料中心的通訊,這時候往往就需要引入額外的機制, 例如 sdn (軟體定義網路)或 nfv (網路功能虛擬化)的相關技術。

docker 埠對映與容器互聯

在啟動容器時,如果不指定引數,外部網路無法訪問容器。當容器執行一些網路應用,需要用外部網路訪問,可以使用 p或 p引數指定對映埠。使用docker port來檢視埠情況。互聯系統基於容器名字,所以要合理定義容器的名字。建立容器的時候使用 name來指定名字。注意 容器名字唯一 docker run ...

Docker 埠對映與容器互聯

埠對映實現容器訪問 1.從外部訪問容器應用 在啟動容器的時候,如果不指定對應引數,在容器外部是無法通過網路來訪問容器內的網路應用和服務的。當容器中執行一些網路應用,要讓外部訪問這些應用時,可以通過 p或 p引數來指定埠對映。當使用 p 大寫的 標記時,docker會隨機對映乙個49000 49900...

Docker學習 九 埠對映與容器互聯

docker提供了兩個很方便的功能來滿足服務訪問的基本需求 1 允許對映容器內應用的服務埠到本地宿主主機 2 互聯機制實現多個容器間通過容器名來快速訪問 1 從外部訪問容器應用 要讓外部訪問這些應用時,可以通過 p或 p引數來指定埠對映 當使用 p標記時,docker會隨機對映乙個49000 499...