Regal Credit Finance Limited

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 87|回復: 0

更新並安裝映像中的軟體

[複製鏈接]

1

主題

1

帖子

5

積分

新手上路

Rank: 1

積分
5
發表於 2024-4-17 11:34:52 | 顯示全部樓層 |閱讀模式
在我之前的文章中,我主要寫瞭如何將伺服器進程作為 Docker 容器輕鬆操作,也適用於臨時需要此類進程的「快速、簡單」情況。在多階段建置的幫助下,身為開發人員,我現在可以在 Docker 映像中建立環境,這些環境不僅為我自己的軟體建立精心配置的編譯環境,而且還可以可靠地描述和記錄它們。 Dockerfile 因此可以成為開發團隊工作的一部分。這對每個團隊成員都有幫助,並且創建過程可以輕鬆外包給持續整合平台。最後,管理員當然也可以將多階段建置用於其他目的,例如初始生成憑證或產生部署中的初始資料。 一切都是為了正確的開始 我想返回到您的圖像的啟動腳本。該範例非常短,但在「真實」Docker 映像中,該腳本可以任意複雜!通常,腳本用於啟動容器中的必要進程,但如果可以直接啟動可執行程序,則無需腳本也可以完成。 我想在這裡提出關於腳本的三個技巧。 第一:要從腳本內啟動另一個進程,建議使用 Bash shell 的 exec 命令,或另一個 shell 的類似命令。



這會導致除了 shell 本身之外不會啟動其他新進程。這與 Docker 相關 沙烏地阿拉伯 電話號碼 因為已經提到的「訊號」的原因——如果進程在執行過程中嵌套,這些訊號到主進程的傳播可能無法保證,或者可能更難實現。 第二:與在真實系統上一樣,最好在具有最低必要權限的容器中執行進程。您可以使用不同的使用者帳戶,而不是以「root」身分啟動所有內容,以便虛擬環境中的潛在入侵者造成的損害較小。Gosu工具通常用於此目的,由於技術原因,它比 su 或 sudo 更適合在 Docker 容器中使用。 第三,如果您的映像是可配置的,則通常應該允許透過環境變數設定選項。從使用者的角度來看,您已經知道在使用命令列選項或使用定義檔啟動容器時如何設定此類變數。您也可以使用 ENV 指令在 Dockerfile 中設定環境變量,這些變數可以在容器內的啟動腳本或任何程式語言中輕鬆使用。





很簡單:您還沒有看到進程如何透過圖像與外部世界進行連結。你已經了解了對方的機制。事實上,當您啟動 Docker 容器時,您經常使用 -p 選項來指定對應到主機系統的網路連接埠組合在許多情況下,您也使用 -v 來掛載磁碟區,即使本機檔案系統的路徑在執行的容器中可用。您可能已經使用過 -P 選項(大寫的 P!),它可以根據鏡像的規格自動映射連接埠。 創建圖像時可以準備這最後一種可能性。您可以使用 EXPOSE 語句在 Dockerfile 中宣布映像將公開特定連接埠。重要的是要了解此步驟不會導致連接埠實際被映射!這仍然僅在啟動容器時使用 -p 或 -P 時發生 - 並且如果尚未使用 EXPOSE,也可以套用這些選項。從某種意義上說,該指令用於記錄影像想要提供的連接埠。類似地,還有 VOLUME 指令,它對於連接磁碟區具有相同的目的 - 在這裡,當從磁碟區開始時,容器中的任何路徑都可以過載。


回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|Regal Credit Finance Limited

GMT+8, 2024-5-12 14:47 , Processed in 0.036438 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表