最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker中配置容器的Swap限制防范宿主機(jī)死機(jī)

 更新時(shí)間:2026年04月27日 09:44:10   作者:舞夢(mèng)輝影  
這篇文章主要介紹了Docker中配置容器的Swap限制防范宿主機(jī)死機(jī),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

要在 Docker 中配置 Swap 限制來(lái)防范宿主機(jī)死機(jī),核心不是“單獨(dú)限制 Swap”,而是通過(guò) --memory 和 --memory-swap 聯(lián)合控制內(nèi)存與交換空間的總邊界。Swap 本身不是萬(wàn)能保險(xiǎn)——若宿主機(jī)沒(méi)開(kāi)啟 swap 分區(qū),容器根本用不了 swap;若配置不當(dāng)(比如只設(shè) --memory-swap 不設(shè) --memory),Docker 會(huì)直接報(bào)錯(cuò)或靜默降級(jí),起不到防護(hù)作用。

一、核心參數(shù):限制容器 Swap

Docker 使用 --memory-swap 控制"內(nèi)存 + Swap"的總和,而非僅 Swap 大小。

場(chǎng)景命令 / 配置說(shuō)明
完全禁用 Swap(推薦生產(chǎn)環(huán)境)docker run -m 1g --memory-swap=1gmemory-swap 等于 memory,Swap 被禁,容器超限即觸發(fā) OOM Killer,快速止損 
限制 Swap 用量docker run -m 1g --memory-swap=2g可用 1GB 內(nèi)存 + 1GB Swap,總計(jì) 2GB
危險(xiǎn):不限制 Swapdocker run -m 1g(默認(rèn))默認(rèn) Swap = memory,總計(jì) 2GB;若設(shè)為 -1 則無(wú)限 Swap,極易拖垮宿主機(jī) 

Docker Compose 配置示例

services:
  app:
    image: myapp:latest
    deploy:
      resources:
        limits:
          memory: 1G
          memory-swap: 1G   # 與 memory 相同,禁用 swap
        reservations:
          memory: 512M
    restart: on-failure:3

二、宿主機(jī)層面加固

1. 啟用 cgroup swap 限制支持

部分 Ubuntu/Debian 系統(tǒng)默認(rèn)未開(kāi)啟,需修改 GRUB:

# 編輯 /etc/default/grub
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
sudo update-grub
sudo reboot

開(kāi)啟后約有 1% 內(nèi)存開(kāi)銷和 10% 性能損耗,但生產(chǎn)環(huán)境強(qiáng)烈建議開(kāi)啟。

2. 調(diào)整宿主機(jī) Swappiness

降低系統(tǒng)使用 Swap 的激進(jìn)程度,優(yōu)先使用物理內(nèi)存:

# 臨時(shí)生效
sudo sysctl vm.swappiness=10
# 永久生效:寫(xiě)入 /etc/sysctl.conf
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

3. 設(shè)置 Docker Daemon 全局限制

/etc/docker/daemon.json 中配置默認(rèn)資源限制(需重啟 Docker):

{
  "default-ulimits": {
    "memlock": { "Name": "memlock", "Hard": -1, "Soft": -1 }
  }
}

三、關(guān)鍵注意事項(xiàng)

?? 危險(xiǎn)操作后果建議
--memory-swap=-1容器可無(wú)限使用 Swap,導(dǎo)致磁盤(pán) thrashing,宿主機(jī)卡死生產(chǎn)環(huán)境絕對(duì)禁止 
--oom-kill-disable 且未設(shè) -mOOM 時(shí)內(nèi)核無(wú)法殺容器,可能殺系統(tǒng)進(jìn)程或?qū)е滤罊C(jī)僅在設(shè)置了 -m 且明確需要時(shí)才使用 
容器設(shè)置 restart: always + 無(wú)資源限制容器反復(fù) OOM 重啟,持續(xù)消耗資源使用 on-failure:3 限制重啟次數(shù) 

四、監(jiān)控與應(yīng)急

1. 檢查現(xiàn)有容器是否有限制

docker ps --format "{{.Names}}" | xargs docker inspect \
  --format='{{.Name}}: Memory={{.HostConfig.Memory}} Swap={{.HostConfig.MemorySwap}}'

Memory=0 表示無(wú)限制,是潛在風(fēng)險(xiǎn)。

2. 實(shí)時(shí)監(jiān)控

# 查看容器內(nèi)存/Swap 使用
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}"
# 查看宿主機(jī) Swap 使用
free -h
cat /proc/swaps

3. 應(yīng)急處理(宿主機(jī)已卡死)

若宿主機(jī)已因 Swap 耗盡死機(jī),需通過(guò) VNC/控制臺(tái)連接:

# 停止 Docker 服務(wù),防止容器自動(dòng)重啟
systemctl stop docker
# 找到問(wèn)題容器并刪除/禁用
cd /var/lib/docker/containers/
# 修改 hostconfig.json 中 RestartPolicy 為 never,或刪除容器目錄
systemctl start docker

五、生產(chǎn)環(huán)境檢查清單

  • 所有容器必須設(shè)置 --memory 硬限制
  • --memory-swap 建議等于 --memory(禁用 Swap)或不超過(guò) 1.5 倍內(nèi)存
  • 關(guān)鍵業(yè)務(wù)容器配置 --restart=on-failure:3,避免無(wú)限重啟
  • 宿主機(jī)開(kāi)啟 swapaccount=1 和 cgroup_enable=memory
  • 部署 Prometheus + cAdvisor 監(jiān)控,設(shè)置內(nèi)存使用率 >70% 告警
  • 定期執(zhí)行 docker stats 審查資源分配是否合理

一句話總結(jié):生產(chǎn)環(huán)境中,給每個(gè)容器設(shè)置 --memory 并令 --memory-swap 等于 --memory,是防止單個(gè)容器耗盡宿主機(jī) Swap 導(dǎo)致系統(tǒng)死機(jī)的最有效手段 。

到此這篇關(guān)于Docker中配置容器的Swap限制防范宿主機(jī)死機(jī)的文章就介紹到這了,更多相關(guān)Docker Swap限制防范宿主機(jī)死機(jī)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker中編碼和時(shí)區(qū)設(shè)置不生效問(wèn)題排查小結(jié)

    Docker中編碼和時(shí)區(qū)設(shè)置不生效問(wèn)題排查小結(jié)

    本文主要介紹了在Docker容器中排查編碼和時(shí)區(qū)設(shè)置不生效的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 在Docker容器中部署MSSQL

    在Docker容器中部署MSSQL

    這篇文章介紹了在Docker容器中部署MSSQL的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Docker核心概念與鏡像倉(cāng)庫(kù)操作指南

    Docker核心概念與鏡像倉(cāng)庫(kù)操作指南

    文章講解了Docker核心概念與操作,包括鏡像(只讀模板)、容器(運(yùn)行實(shí)例)、鏡像倉(cāng)庫(kù)(存儲(chǔ)分發(fā)平臺(tái))的定義及蛋糕、圖書(shū)館等類比,梳理了鏡像拉取、推送、搜索等常用命令,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • Docker網(wǎng)絡(luò)配置與自定義IP容器通信

    Docker網(wǎng)絡(luò)配置與自定義IP容器通信

    IP地址是Docker容器在網(wǎng)絡(luò)中的唯一標(biāo)識(shí),每個(gè)Docker都會(huì)被分配一個(gè) IP,用于網(wǎng)絡(luò)通信,本文主要介紹了Docker網(wǎng)絡(luò)配置與自定義IP容器通信,感興趣的可以了解一下
    2024-03-03
  • Docker如何使用OpenvSwitch網(wǎng)橋

    Docker如何使用OpenvSwitch網(wǎng)橋

    本篇文章主要介紹了Docker如何使用OpenvSwitch網(wǎng)橋,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 從Docker容器復(fù)制文件到主機(jī)的四種方法

    從Docker容器復(fù)制文件到主機(jī)的四種方法

    在使用Docker進(jìn)行開(kāi)發(fā)和部署時(shí),有時(shí)需要將容器內(nèi)生成的構(gòu)建工件復(fù)制到主機(jī)上,例如,在持續(xù)集成服務(wù)器上使用Docker構(gòu)建依賴項(xiàng),而不希望在代理服務(wù)器上安裝所有運(yùn)行時(shí)和庫(kù),所以本文給大家介紹了從Docker容器復(fù)制文件到主機(jī)的四種方法
    2025-06-06
  • 在docker中部署k8s的方法

    在docker中部署k8s的方法

    這篇文章主要介紹了在docker中部署k8s的方法,包括K8S的基本概念介紹,docker容器的下載方法及k8s相關(guān)命令介紹,感興趣的朋友一起看看吧
    2021-07-07
  • Docker環(huán)境安裝anythingllm教程

    Docker環(huán)境安裝anythingllm教程

    用戶詢問(wèn)Docker操作步驟,包括拉取鏡像、創(chuàng)建掛載目錄并檢查寫(xiě)權(quán)限,使用--cap-add SYS_ADMIN啟用安全沙箱,以運(yùn)行特定應(yīng)用或服務(wù),其他常用Docker命令亦可參考
    2025-07-07
  • Dockerfile常用命令的使用簡(jiǎn)介

    Dockerfile常用命令的使用簡(jiǎn)介

    這篇文章主要介紹了Dockerfile常用命令的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用Docker,感興趣的朋友可以了解下
    2021-04-04
  • Docker 啟動(dòng)Redis 并設(shè)置密碼的操作

    Docker 啟動(dòng)Redis 并設(shè)置密碼的操作

    這篇文章主要介紹了Docker 啟動(dòng)Redis 并設(shè)置密碼的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11

最新評(píng)論

色达县| 海宁市| 河东区| 石河子市| 汉沽区| 定襄县| 措勤县| 盱眙县| 阳曲县| 社会| 内江市| 平山县| 东源县| 聊城市| 开远市| 鹤岗市| 杨浦区| 瑞昌市| 重庆市| 河东区| 清涧县| 屏边| 沧州市| 曲周县| 巴里| 南安市| 女性| 武宣县| 江阴市| 长沙县| 邵阳市| 汶上县| 锡林郭勒盟| 丘北县| 兰溪市| 西林县| 钟山县| 林西县| 郸城县| 吴忠市| 汝南县|