大量的網際網路應用服務包括多個服務元件,這往往需要多個容器之間通過網路通訊進行相互配合。
docker目前提供了對映容器埠到宿主主機和容器互聯機制來為容器提供網路服務。
埠對映實現訪問容器:
在啟動容器的時候,如果不指定對應引數,在容器外部是無法通過網路來訪問容器內的網路應用和服務的。
從外部訪問容器應用:
當容器中執行一些網路應用,要讓外部訪問這些應用時,可以通過-p或-p引數來指定埠對映。當使用-p標記時,docker會隨機對映49000~49900中的埠至容器內部開放的網路埠。
小寫-p則可以指定要對映的埠,並且,在乙個指定埠上只可以繫結乙個容器。支援的格式有:
使用hostport:containerport格式將本地5000埠對映到容器5000埠(之前建立私有倉庫的例子):
docker run –d –p 5000:5000 registry
這時缺省會繫結本地所有介面上的所有位址。可以多次使用-p引數從而對映多個埠。
可以使用ip:hostport:containerport格式指定對映使用乙個特定位址,比如locakhost位址127.0.0.1。
docker run –d –p 127.0.0.1:5000:5000 registry
可以使用ip::containerport格式幫頂localhost的任意埠到容器的5000埠,本地主機會自動分配乙個埠:
docker run –d –p 127.0.0.1::5000 registry
可以使用udp標記來指定udp埠:
docker run –d –p 127.0.0.1:5000:5000/udp registry
檢視埠對映配置:
docker port registry5000/tcp -> 0.0.0.0:5000
docker port registry 5000
0.0.0.0:5000
容器有自己的內部網路和ip位址(使用docker inspect + id可以獲取所有變數值)。
容器互聯實現容器間通訊:
容器的連線(linking)系統是除了埠對映外另一種可以與容器中應用進行互動的方式。他會在源和接收容器之間建立乙個隧道,接受容器可以看到源容器指定的資訊。
容器互聯:
使用–link引數可以讓容器之間安全的進行互動。
比如建立乙個資料庫容器:
docker run —name dbserver mysql
讓後建立乙個容器,並將這個容器連線到dbserver容器:
docker run –d —name likeweb —link dbserver:dbserver ubuntu
因為要連線的容器並沒有啟動,所以建立完容器之後會報錯,這裡只是演示–link,請忽略。
–link引數的格式為–link name:alias,其中name是要鏈結的容器的名稱,alias是這個連線的別名。
可以用docker ps 命令檢視連線情況。
這樣docker兩個容器之間建立了乙個安全隧道而不需要開放外部埠,避免了資料庫埠到外部網路上。
docker通過兩種方式為容器公開連線資訊:
可以使用env命令來檢視容器的環境變數。
docker目前採用了linux系統自帶的網路系統來實現對網路服務的支援,這既可以利用現有成熟的技術提供穩定的支援,又可以實現快速的高效能**。
**:夢續**
Docker網路基礎
大量的網際網路應用服務包括多個服務元件,這往往需要多個容器之間通過網路通訊進行相互配合。docker目前提供了對映容器埠到宿主主機和容器互聯機制來為容器提供網路服務。埠對映實現訪問容器 在啟動容器的時候,如果不指定對應引數,在容器外部是無法通過網路來訪問容器內的網路應用和服務的。從外部訪問容器應用 ...
docker基礎 docker網路模式
docker啟動之後,會在宿主機虛擬乙個docker容器網橋 docker0 docker啟動乙個容器時會根據docker網橋的網段分配給容器乙個ip位址,稱為container ip,其實,總共有5種,常用的是以下4種 docker網路模式 配置 說明 host模式 net host 容器和宿主機...
docker網路基礎配置
常用兩種方式 1 對映容器埠到宿主機 2 容器互聯機制 埠對映實現訪問容器的用法 p則可以指定要對映的埠,並且,在乙個指定埠上只可以繫結乙個容器。例如 把本地的5000埠對映到容器的5000埠 對映到指定位址的任意埠 檢視對映埠配置 docker port 容器互聯實現容器間通訊 容器的連線系統是除...