Dockerfile EXPOSE指令 語法解析

2021-10-10 08:07:20 字數 3940 閱讀 5673

docker容器啟動後,需要宿主機和容器埠進行對映,以便容器內服務對外暴露,這可以在啟動是通過docker run -p host:port ...指定,也可以在映象構建時通過dockerfileexpose指令指定,本文本來具體對expose指令進行解析。

expose 語法

expose [/...]
expose 語義·expose指令宣告docker容器在執行時偵聽的網路埠。

·通過指定監聽協議是tcp還是udp,若未指定協議,則預設為tcp

·expose並不會發布埠,僅作為映象構建者和容器執行者之間的協議文件,描述需要發布哪些埠。

·實際發布埠,需要執行容器時通過docker run -p指定,或通過docker run -p隨機對映expose指令宣告的埠列表中優先順序最高的。

·exposedocker 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請求...