日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 容器異常退出,狀態(tài)碼為253
    • 具體場景
    • 原因分析
    • 問題解決
    • 附成功docker-compose
  • Docker容器退出狀態(tài)碼existed
    • 常見的容器退出狀態(tài)碼解釋
    • 不常用的一些 Exit Code
  • 總結(jié)

    容器異常退出,狀態(tài)碼為253

    我遇到的情況為容器內(nèi)掛載到docker卷的目錄不存在,導(dǎo)致掛載失敗,容器異常退出

    具體場景

    使用rocketmq官方工具制作指定版本鏡像,使用docker-compose啟動nameSrv1+MasterBroker1+SlaveBroker*1,將broker的日志目錄和存儲目錄掛載在docker卷上,具體docker-compose如下。

    version: '2'
    services:
    ? ? mq_nsrv:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_namesrv
    ? ? ? ? ports:
    ? ? ? ? ? ? - 9876:9876
    ? ? ? ? volumes:
    ? ? ? ? ? ? - mq_nsrv:/home/rocketmq/logs
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? command: sh mqnamesrv
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    ? ? mq_broker_m:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_broker_m
    ? ? ? ? links:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? depends_on:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? environment:
    ? ? ? ? ? ? JAVA_OPTS: " -Duser.home=/opt -Dlogging.level.root=info"
    ? ? ? ? ? ? JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    ? ? ? ? ports:
    ? ? ? ? ? ? - 10909:10909
    ? ? ? ? ? ? - 10911:10911
    ? ? ? ? ? ? - 10912:10912
    ? ? ? ? volumes:
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? ? ? - master_broker_log:/home/rocketmq/log
    ? ? ? ? ? ? - master_broker_store:/home/rocketmq/store
    ? ? ? ? ? ? - ./broker_m.conf:/opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? command: sh mqbroker -c /opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    ? ? mq_broker_s:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_broker_s
    ? ? ? ? links:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? depends_on:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? environment:
    ? ? ? ? ? ? JAVA_OPTS: " -Duser.home=/opt -Dlogging.level.root=info"
    ? ? ? ? ? ? JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    ? ? ? ? ports:
    ? ? ? ? ? ? - 11909:10909
    ? ? ? ? ? ? - 11911:10911
    ? ? ? ? ? ? - 11912:10912
    ? ? ? ? volumes:
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? ? ? - slave_broker_log:/home/rocketmq/log
    ? ? ? ? ? ? - slave_broker_store:/home/rocketmq/store
    ? ? ? ? ? ? - ./broker_s.conf:/opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? command: sh mqbroker -c /opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    volumes:
    ? ? mq_nsrv:
    ? ? ? ? driver: local
    ? ? master_broker_log:
    ? ? ? ? driver: local
    ? ? master_broker_store:
    ? ? ? ? driver: local
    ? ? slave_broker_log:
    ? ? ? ? driver: local
    ? ? slave_broker_store:
    ? ? ? ? driver: local
    networks:
    ? ? mq_net:
    ? ? ? ? driver: bridge

    原因分析

    在此制作的鏡像中,/home/rocketmq/目錄下為空,在brocker運行之后,生成/log和/store目錄,并對其中進行寫入數(shù)據(jù),此時使用docker-compose啟動時,無法將卷掛載在/log和/store目錄下。

    問題解決

    重新制作鏡像,在指定目錄下創(chuàng)建目錄(從根本解決問題)

    在掛載卷的時候,使用其根目錄掛載,不區(qū)分log和store卷,直接掛在/home/rocketmq下(省事)

    附成功docker-compose

    version: '2'
    services:
    ? ? mq_nsrv:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_namesrv
    ? ? ? ? ports:
    ? ? ? ? ? ? - 9876:9876
    ? ? ? ? volumes:
    ? ? ? ? ? ? - mq_nsrv:/home/rocketmq/logs
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? command: sh mqnamesrv
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    ? ? mq_broker_m:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_broker_m
    ? ? ? ? links:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? depends_on:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? environment:
    ? ? ? ? ? ? JAVA_OPTS: " -Duser.home=/opt -Dlogging.level.root=info"
    ? ? ? ? ? ? JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    ? ? ? ? ports:
    ? ? ? ? ? ? - 10909:10909
    ? ? ? ? ? ? - 10911:10911
    ? ? ? ? ? ? - 10912:10912
    ? ? ? ? volumes:
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? ? ? - master_broker:/home/rocketmq
    ? ? ? ? ? ? - ./broker_m.conf:/opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? command: sh mqbroker -c /opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    ? ? mq_broker_s:
    ? ? ? ? image: apacherocketmq/rocketmq:4.3.1
    ? ? ? ? container_name: rocketmq_broker_s
    ? ? ? ? links:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? depends_on:
    ? ? ? ? ? ? - mq_nsrv
    ? ? ? ? environment:
    ? ? ? ? ? ? JAVA_OPTS: " -Duser.home=/opt -Dlogging.level.root=info"
    ? ? ? ? ? ? JAVA_OPT_EXT: "-server -Xms256m -Xmx256m -Xmn256m"
    ? ? ? ? ports:
    ? ? ? ? ? ? - 11909:10909
    ? ? ? ? ? ? - 11911:10911
    ? ? ? ? ? ? - 11912:10912
    ? ? ? ? volumes:
    ? ? ? ? ? ? - /etc/localtime:/etc/localtime
    ? ? ? ? ? ? - /etc/timezone:/etc/timezone
    ? ? ? ? ? ? - slave_broker:/home/rocketmq
    ? ? ? ? ? ? - ./broker_s.conf:/opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? command: sh mqbroker -c /opt/rocketmq-4.3.1/conf/broker.conf
    ? ? ? ? networks:
    ? ? ? ? ? ? - mq_net
    volumes:
    ? ? mq_nsrv:
    ? ? ? ? driver: local
    ? ? master_broker:
    ? ? ? ? driver: local
    ? ? slave_broker:
    ? ? ? ? driver: local
    networks:
    ? ? mq_net:
    ? ? ? ? driver: bridge

    Docker容器退出狀態(tài)碼existed

    在起容器的時候,發(fā)現(xiàn)容器出于existed狀態(tài),狀態(tài)碼為130,查找后發(fā)現(xiàn),自己啟動的時候使用了非后臺啟動。當手動 ctrl+C 退出命令行的時候,容器也就退出了。

    開始的時候,不知道狀態(tài)碼含義,糾結(jié)了很久,于是把一些狀態(tài)碼的含義搜羅了一下。

    • 首先狀態(tài)碼必須在 0-255 之間
    • 0 表示正常退出
    • 外界中斷將程序退出的時候狀態(tài)碼區(qū)間在 129-255,(操作系統(tǒng)給程序發(fā)送中斷信號,比如 kill -9 是 SIGKILL,ctrl+c 是 SIGINT)
    • 一般程序自身原因?qū)е碌漠惓M顺鰻顟B(tài)區(qū)間在 1-128 (這只是一般約定,程序如果一定要用129-255的狀態(tài)碼也是可以的)

    下圖為部分狀態(tài)碼:

    解決Docker容器異常退出Exit(253)問題

    常見的容器退出狀態(tài)碼解釋

    Exit Code 0

    退出代碼0表示特定容器沒有附加前臺進程

    該退出代碼是所有其他后續(xù)退出代碼的例外

    這不一定意味著發(fā)生了不好的事情。如果開發(fā)人員想要在容器完成其工作后自動停止其容器,則使用此退出代碼。比如:kubernetes job 在執(zhí)行完任務(wù)后正常退出碼為 0

    Exit Code 1

    程序錯誤,或者Dockerfile中引用不存在的文件,如 entrypoint中引用了錯誤的包

    程序錯誤可以很簡單,例如 “除以0”,也可以很復(fù)雜,比如空引用或者其他程序 crash

    Exit Code 137

    表明容器收到了 SIGKILL 信號,進程被殺掉,對應(yīng)kill -9

    引發(fā)SIGKILL的是docker kill。這可以由用戶或由docker守護程序來發(fā)起,手動執(zhí)行:docker kill

    137 比較常見,如果 pod 中的limit 資源設(shè)置較小,會運行內(nèi)存不足導(dǎo)致 OOMKilled,此時state 中的 ”OOMKilled” 值為true,你可以在系統(tǒng)的 dmesg -T 中看到 oom 日志

    Exit Code 139

    表明容器收到了 SIGSEGV 信號,無效的內(nèi)存引用,對應(yīng)kill -11

    一般是代碼有問題,或者 docker 的基礎(chǔ)鏡像有問題

    Exit Code 143

    表明容器收到了 SIGTERM 信號,終端關(guān)閉,對應(yīng)kill -15

    一般對應(yīng) docker stop 命令

    有時docker stop也會導(dǎo)致Exit Code 137。發(fā)生在與代碼無法處理 SIGTERM 的情況下,docker進程等待十秒鐘然后發(fā)出 SIGKILL 強制退出。

    不常用的一些 Exit Code

    Exit Code 126: 權(quán)限問題或命令不可執(zhí)行

    Exit Code 127: Shell腳本中可能出現(xiàn)錯字且字符無法識別的情況

    Exit Code 1 或 255:因為很多程序員寫異常退出時習(xí)慣用 exit(1) 或 exit(-1),-1 會根據(jù)轉(zhuǎn)換規(guī)則轉(zhuǎn)成 255。這個一般是自定義 code,要看具體邏輯。

    總結(jié)

    以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持。

    分享到:
    標簽:容器 異常 服務(wù)器 解決 退出
    用戶無頭像

    網(wǎng)友整理

    注冊時間:

    網(wǎng)站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網(wǎng)站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網(wǎng)站吧!
    最新入駐小程序

    數(shù)獨大挑戰(zhàn)2018-06-03

    數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

    答題星2018-06-03

    您可以通過答題星輕松地創(chuàng)建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學(xué)四六

    運動步數(shù)有氧達人2018-06-03

    記錄運動步數(shù),積累氧氣值。還可偷

    每日養(yǎng)生app2018-06-03

    每日養(yǎng)生,天天健康

    體育訓(xùn)練成績評定2018-06-03

    通用課目體育訓(xùn)練成績評定