docker容器啟動後,需要宿主機和容器埠進行對映,以便容器內服務對外暴露,這可以在啟動是通過docker run -p host:port ...
指定,也可以在映象構建時通過dockerfile
的expose
指令指定,本文本來具體對expose
指令進行解析。
expose 語法
expose [/...]
expose 語義·expose
指令宣告docker容器在執行時偵聽的網路埠。
·通過指定監聽協議是tcp
還是udp
,若未指定協議,則預設為tcp
。
·expose
並不會發布埠,僅作為映象構建者和容器執行者之間的協議文件,描述需要發布哪些埠。
·實際發布埠,需要執行容器時通過docker run -p
指定,或通過docker run -p
隨機對映expose
指令宣告的埠列表中優先順序最高的。
·expose
與docker run --expose
作用相同。docker run --expose
可以指定埠範圍,如:docker run --expose=2000-3000
.
·expose
宣告發布埠好處:
1)清晰描述映象的埠行為,便於映象的後期維護。
2)執行容器時,可以通過docker run -p
指定埠。
expose 示例
·dockerfile
中通過expose
指定埠,容器啟動時使用docker run -p host:port
指定埠。
1)進入/securitit/dockerfile/目錄(根據個人選擇,這是本文使用的目錄),建立dockerfile
檔案。
from nginx
maintainer securitit
# 9181是隨便定義的埠,容器內並沒有此服務.
expose 9181
cmd ["usr/sbin/nginx", "-g", "daemon off;"]
配置檔案中暴露了9181埠,同時nginx:latest缺省會暴露80埠,也就是此映象宣告暴露兩個埠:80和9181。
2)執行如下的構建命令,基於dockerfile
構建映象。
3)檢視映象資訊。
4)檢視映象元資料。
可以看到構建的映象宣告開放80和8080兩個埠。
docker inspect -f
} abde875b8b42
5)指定通過dockerfile
生成的映象啟動容器。
docker run --name securitit-nginx-expose -it -d -p 9191:80 securitit-nginx-expose:1.0.0.1
6)檢視容器資訊。
docker ps -a
7)通過docker run -p
指定的埠訪問服務。
·dockerfile
中通過expose
指定多個埠,容器啟動時使用docker run -p
使用隨機埠。
1)進入/securitit/dockerfile/目錄(根據個人選擇,這是本文使用的目錄),建立dockerfile
檔案。
from nginx
maintainer securitit
expose 9181
expose 9182
expose 9183
expose 9184
expose 9185
cmd ["usr/sbin/nginx", "-g", "daemon off;"]
配置檔案中暴露了9181、9182、9183、9184、9185埠,同時nginx:latest缺省會暴露80埠,也就是此映象宣告暴露六個埠:80、9181、9182、9183、9184、9185。
2)執行如下的構建命令,基於dockerfile
構建映象。
3)檢視映象資訊。
4)檢視映象元資料。
可以看到構建的映象宣告開放80和8080兩個埠。
docker inspect -f
} abde875b8b42
5)指定通過dockerfile
生成的映象啟動容器。
docker run --name securitit-nginx-expose-v2 -it -d -p securitit-nginx-expose:1.0.0.2
6)檢視容器資訊。
總結expose
目的不是為了發布埠,而是為了形成映象文件約定,用於映象發布者和容器執行者之間進行約定,同時可有效保證映象和容器維護者能高效的了解映象和容器的資訊。
若文中存在錯誤和不足,歡迎指正!
tar指令祥解
tar命令 tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案 備份檔案 也可以在檔案中改變檔案,或者向檔案中加入新的檔案。tar 最初被用來在磁帶上建立檔案,現在,使用者可以在任何裝置上建立檔案,如軟盤。利用tar命令,可以把一大堆的檔案和目錄全部打包成乙個檔案,這對於備...
NVelocity語法常用指令
對變數的引用 在nvelocity中,對變數的引用都是以 開頭加上變數名稱。當使用 時表示當此變數值為空時,顯示空字串。比如當 article為空,那會顯示 article 而 article會顯示為 為變數名稱限定,有時候變數名稱後會有字串,這是就需要用到 了。比如 articleshow,想引用...
Nginx Location 指令語法解析
本文翻譯自 www.keycdn.com support ngi nginx location是使用 nginx 的過程中必須要掌握的技能,無論是在server blocks還是其他location blocks中都會用到,這篇文章簡單介紹了當請求來臨時location指令是如何處理客戶端uri請求...