亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教在碼頭工人中使用主管

請教在碼頭工人中使用主管

夢里花落0921 2019-09-03 09:00:10
在碼頭工人中使用主管我不是在詢問使用碼頭工人的主管,而只是想讓我的理解得到驗證。我知道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以轉發信號并收集進程




查看完整回答
反對 回復 2019-09-10
  • 2 回答
  • 0 關注
  • 632 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號