小娜老師的講義 Docker基礎知識 網路基礎配置

2021-07-23 12:06:08 字數 2655 閱讀 8360

今天講docker的網路基礎配置

比較成熟的網際網路應用服務往往需要很多服務元件,為了更好地相互配合,需要多個容器之間可以互聯通訊。

目前docker提供的是對映容器埠到宿主主機以及容器互聯機制來為容器提供網路服務。

使用的docker的網路功能包括使用埠對映機制來將容器內應用服務提供給外部網路,以及通過容器互聯系統讓多個容器之間進行快捷的網路通訊。

先說前者,通過埠對映實現訪問容器:

1)從外部訪問容器應用:

啟動容器時,需要指定相應的引數,否則在外部不能通過網路來訪問容器內部的網路應用和服務。

這個引數就是-p或者-p,用它們來指定對應的埠,用-p標記時,一般情況下docker會隨機的對映乙個埠到容器內部開放的網路埠:

可以看到,本地主機的32772埠被對映到了容器的5000埠上,此時訪問宿主主機的32772埠就可以訪問容器內web提供的介面。

用docker logs也可以檢視應用裡面的資訊:

$ docker logs -f name
如果是-p的話,那就要指定具體的埠號了,並且乙個指定的埠上只能繫結乙個容器,支援的格式有:hostport:containerport ip:hostport:containerport ip::containerport

2)對映所有介面位址

$ docker run -d

-p

應用hostport:containerport格式來將本地的埠對映到容器的5000埠

3)對映到指定位址的指定埠

$ docker run -d

-p127.0

.0

應用ip:hostport:containerport格式指定對映的特定位址

4)對映到指定位址的任意埠

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

預設情況下用的是tcp協議,也可用udp標記來指定udp埠,直接在埠號的後面加上/udp即可。

$ docker port name

5000

再說後者,即容器互聯實現容器間通訊:

這種通訊方式會在源和接收容器之間建立乙個隧道,接收容器可以看到源容器指定的資訊。

1)自定義容器命名:我們自己定義乙個好記的容器名稱,用–name標記

用docker ps驗證:

需要注意的是,容器的名稱是唯一的,除非刪除之前存在的容器

2)容器互聯

我們用–link引數讓容器之間進行互動

下面我們先建立乙個新的資料庫容器:

刪除之前建立的web容器:

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

$ docker run -d

-p--name web --

可以看到自定義命名的容器:db和web.db容器的names列有db也有web/db.這表示web容器鏈結到db容器,這允許web容器訪問db容器的資訊。

docker在兩個互聯的容器之間建立了乙個安全隧道,而且不用對映他們的埠到宿主主機上,在啟動db容器的時候並沒有使用-p和-p標記,從而避免了暴露資料庫埠到外部網路上。

docker通過兩種方式為容器公開連線資訊:

①環境變數

②更新/etc/hosts檔案

使用env命令來檢視web容器的環境變數:

$

docker

run--rm

--name

web2--

link

db:db

env

其中db_開頭的環境變數是提供web容器連線db容器使用,字首採用大寫的連線別名。

除了環境變數,docker還新增host資訊到父容器的/etc/hosts的檔案,下面是父容器web的hosts檔案:

$ docker run -t

-i--rm --

這裡有兩個hosts資訊,第乙個是web容器,web容器用自己的id作為預設主機名,第二個是db容器的ip和主機名,可以在web容器中安裝ping命令來測試db容器的連通:

用ping來測試db容器,它會解析成172.17.0.5。注意,官方的ubuntu 12.04映象預設沒有安裝ping,需要自行安裝。

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

小結:網路是雲時代最核心也是最複雜的系統之一,我們在這部分中講解了docker涉及網路的基本操作,包括基礎的容器埠對映機制和容器互聯機制。docker目前採用了linux系統自帶的網路系統來實現對網路服務的支援,這既可以利用現有成熟的技術提供穩定支援,又可以實現快速的高效能**。

在生產環境中,網路方面的需求更加複雜多變,往往需要引入額外的機制,例如sdn(軟體定義網路)或nfv(網路功能虛擬化)的相關技術,之後我們會進一步**docker網路的高階配置和實現細節。

小娜老師的講義 Docker基礎知識 容器(二)

好了,今天講一哈容器的刪除 匯入 匯出 刪除容器 我們一般用docker rm 命令刪除處於終止狀態的容器,命令格式為 docker rm options container container 支援選項包括 f,force false強行終止並刪除乙個執行中的容器 l,link false 刪除容...

小娜老師的講義 Docker基礎知識 資料管理

今天我們來講講容器的資料管理,在使用docker的時候,我們需要經常檢視容器內應用產生的資料,或者把容器裡的資料進行備份,甚至我們可以實現多個容器之間的資料共享。容器中管理資料主要有兩種方式,一種是資料卷,另一種是資料卷容器 今天主要和大家聊聊資料卷,我會給大家介紹如何在容器裡面建立資料卷,並把本地...

微軟小娜APP的案例分析

通過各種案例分析,評測,辯論,總結,我們就能看到軟體工程的原則在實踐中的種種體現,學好軟體工程,幫助我們在實踐中做得更好。產品 微軟小娜 智慧型助手,win10,ios或 android 客戶端都有!第一部分 調研,評測 軟體的 bug,功能評測,黑箱測試,第 8章 使用者調研,12 章 軟體的使用...