跳至主要內容

連接埠

在範本上宣告一個連接埠,Superheat 就會在執行個體啟動時發布它,把容器連接埠對應到你租用的機器上的某個主機連接埠。你的工作負載上任何想從外部連到的接聽位置 —— 推論伺服器、網頁介面、指標端點 —— 都需要在這裡有一列。

宣告連接埠

連接埠 區段中的每一列有四個部分。

部分可接受的內容意義
容器連接埠1 到 65535你的程序在容器 內部 接聽的連接埠。
通訊協定tcpudphttphttps該連接埠提供什麼服務。httphttps 都以 TCP 發布;這個區別是用來記錄意圖,也決定主控台如何呈現該連接埠。
標籤最多 64 個字元給人看的名稱,顯示在範本詳細資料上。有些值是保留的 —— 見下文。
公開開關,預設為開啟記錄在連接埠項目上。

你只宣告 容器 連接埠。主機連接埠會在啟動時從機器已發布的範圍中指派,你事先不會知道它是多少。在容器內,每個已發布的 TCP 連接埠都可以透過 SUPERHEAT_TCP_PORT_<container_port> 取得:

echo "$SUPERHEAT_TCP_PORT_7860"

這個環境變數就是你從工作負載內部讀取主機連接埠的方式。執行個體頁面的 連線 分頁會呈現 SSH 命令,若範本有設定,也會呈現 開啟開啟 JupyterLab 連結。請參閱連接埠與網路

標籤

標籤會去除前後空白並在比對時不分大小寫,其中有六個會對應到四種保留角色。

標籤作用
openopen_buttonopen-button讓這個連接埠成為 開啟 按鈕的目標。該連接埠會以 open_button 角色發布,埠號會以 OPEN_BUTTON_PORT 傳給容器。
sshssh 角色發布。
jupyterjupyter 角色發布。
appapp 角色發布 —— 這是預設值。
其他任何值保留為顯示標籤;該連接埠會以 app 角色發布。

所以標籤為 JupyterjupyterJUPYTER 的連接埠意思完全相同,而 Gradio UI 只是一個帶著好記名稱的普通 app 連接埠。

你不用宣告的連接埠

啟動模式會前置加入它們需要的連接埠。在 ssh 模式下,容器連接埠 22 會替你加上。在 jupyter 模式下,22 與 8080 都會加上。自己宣告它們無害但多餘:清單會依容器連接埠與通訊協定去除重複,隱含項目會勝過普通的 app 項目。

優先順序由高到低是 sshjupyter,接著是 open_button,然後是 app。這就是為什麼範本可以同時在清單中宣告某個連接埠,又把開啟按鈕指向它 —— 存留下來的項目會帶著 open_button 角色。

args 模式下不會前置加入任何東西。如果你想以 SSH 連到 args 範本,就得自己負責在映像檔中執行 SSH 伺服器並自行宣告連接埠,或者改用 ssh 模式搭配衍生自基礎映像檔的映像檔。

開啟按鈕的連接埠

當範本指定了目標連接埠時,主控台會在執行個體上顯示 開啟 按鈕。設定方式是把剛好一個連接埠標籤為 open

{
"ports": [
{ "container_port": 7860, "protocol": "http", "label": "open", "public": true },
{ "container_port": 9090, "protocol": "http", "label": "metrics", "public": true }
]
}

若把多個連接埠都標籤為 open,清單中最後一個會勝出,而那通常不是你的本意。請只宣告一個。

jupyter 模式下你根本不需要開啟按鈕的連接埠 —— 主控台會依據 Jupyter 角色呈現 開啟 JupyterLab,網址中已經帶著存取權杖。請參閱 JupyterLab

連接埠是配方的一部分

連接埠清單是啟動欄位,所以編輯它會重新產生範本的 hash_id,並使釘選的分享連結失效。執行中的執行個體會保有啟動當下的連接埠對應;新的連接埠只會出現在編輯之後才部署的執行個體上。