在碼頭工人中使用主管我不是在詢問使用碼頭工人的主管,而只是想讓我的理解得到驗證。我知道docker在運行時會運行一個進程。此外,當我們需要在容器內運行多個進程時,使用supervisor。我已經看到幾個例子,其中一個容器從基本映像啟動并安裝了幾個服務,并且容器被提交以形成一個新映像,所有這些都沒有supervisor。所以,我的基本疑問是兩種方法之間的區別。我的理解是當docker容器停止時它會向PID進程發送一個kill信號,PID 1管理子進程并停止所有的子進程,這正是supervisor所做的那樣,而我們可以安裝多個進程而不需要supervisor可以在docker run發出進程時運行,當容器停止時,只有PID 1將被發送信號,其他運行進程將不會正常停止。請確認我對使用的理解supervisord是否正確。
2 回答

智慧大石
TA貢獻1946條經驗 獲得超3個贊
更新碼頭1.12(2016年第4季度/ 2017年第1季度)
Arnaud Porterie剛剛穿過:
[
]剛剛合并:有了
docker run --init
,Rick Grimes會照顧你所有的僵尸。
(提交eabae09)
參見PR 26061:“ 為僵尸戰斗和信號處理添加初始化過程 ”(和PR 26736)
這增加了一個小的C二進制文件來對抗僵尸。它安裝在/ dev / init下,并預先添加到用戶指定的args中。您可以通過守護程序標志dockerd --init啟用它,因為默認情況下禁用向后compat。
您還可以覆蓋守護程序選項,或者在每個容器的基礎上指定它
docker run --init=true|false
。您可以通過運行像這樣的進程作為容器中的pid 1來測試這一點,并查看容器在運行時出現的額外僵尸。
int main(int argc, char ** argv) { pid_t pid = fork(); if (pid == 0) { pid = fork(); if (pid == 0) { exit(0); } sleep(3); exit(0); } printf("got pid %d and exited\n", pid); sleep(20);}
該碼頭工人守護現在有選項
--init
在容器內運行init以轉發信號并收集進程
- 2 回答
- 0 關注
- 632 瀏覽
添加回答
舉報
0/150
提交
取消