在實際專案中如何組織docker容器和程序的關係

2021-10-23 09:16:32 字數 804 閱讀 2884

前言

1: 在日常啟動中,乙個容器含有多個程序。那麼哪個才是與容器生命週期相關的程序呢?

2: 在容器的dockerfile檔案中,cmd可以指定容器需要執行的命令(或者entrypoint),其實這就是docker容器的住程序

3: 其實docker容器建議使用單程序,但是我們經常使用多程序,並且採取了講多個命令寫到pod的乙個指令碼中。

然後在dockerfile中,將start-kubernetes.sh指定為docker容器預設執行的命令即可:

cmd ["start-kubernetes.sh"]

需要注意的一點在於,start-kubernetes.sh指令碼將作為docker容器的1號程序執行,必須始終保持執行。因為docker容器僅在1號程序執行時保持執行,換言之,docker容器將在1號程序退出後exited。由於kubernetes的各個元件都以後臺程序方式執行,我在指令碼末尾新增了死迴圈,以保持start-kubernetes.sh指令碼始終處於執行狀態。

正文1:多程序

通常,docker容器適合執行單個程序,但是很多時候我們需要在docker容器中執行多個程序。這時有兩種不同方法來執行多程序容器:使用shell指令碼或者supervisor,兩種方法都很簡單,各有優劣,只是有一些值得注意的細節。

多程序管理程式 這也是docker官方比較推薦的一種方式,有兩篇官方博文介紹: process management with cfengine 和 using supervisor with docker 。 思路其實很明確 : 將多程序轉為單程序(管理程式,容器的 init 程式),這個 init 程式的 生命週期和容器是一樣的,由

關於cachedrowset在實際專案中的應用

由於專案需求原因,需要實現乙個功能就是,抽取大量的資料庫資料然後寫入文字並打包上傳。看似乙個很簡單的東西,在大資料量的環境下就顯得不是那麼簡單了。首先有60張左右的表需要進行資料的處理。各個公司情況不同,表的總資料量可能是幾千萬到幾十億不等。所以,耗時非常嚴重。由於只是單純的進行資料的提取加工寫入文...

OTP在實際專案中的整合

提起動態令牌,大家都會想到認證伺服器,而這個認證伺服器又怎麼應用到實際的應用系統中呢?在這裡做乙個分析和說明,幫助廣大使用者能夠更好的使用otp動態令牌這種身份認證產品。從前面otp原理部分中可以看出,伺服器端是在乙個範圍內計算出多個otp,然後檢驗客戶端硬體產生的otp口令是否在這個範圍內。那麼伺...

元件在實際專案中的使用

元件在實際專案中的使用 自動封裝元件 封裝元件後元件間傳值 父傳子props 子傳父 emit 元件事件的呼叫 在父元件內 元件標籤新增ref 自定義名 this.refs.自定義元件名.子元件方法 元件插槽 套入資料或分開布局 slot的使用就像它的名字一樣,在元件內定義一塊空間,取名為slota...