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

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

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

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

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

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

場景命令 / 配置說明
完全禁用 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
危險:不限制 Swapdocker run -m 1g(默認(rèn))默認(rèn) Swap = memory,總計(jì) 2GB;若設(shè)為 -1 則無限 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)未開啟,需修改 GRUB:

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

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

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

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

# 臨時生效
sudo sysctl vm.swappiness=10
# 永久生效:寫入 /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)

?? 危險操作后果建議
--memory-swap=-1容器可無限使用 Swap,導(dǎo)致磁盤 thrashing,宿主機(jī)卡死生產(chǎn)環(huán)境絕對禁止 
--oom-kill-disable 且未設(shè) -mOOM 時內(nèi)核無法殺容器,可能殺系統(tǒng)進(jìn)程或?qū)е滤罊C(jī)僅在設(shè)置了 -m 且明確需要時才使用 
容器設(shè)置 restart: always + 無資源限制容器反復(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 表示無限制,是潛在風(fēng)險。

2. 實(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ī),需通過 VNC/控制臺連接:

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

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

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

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

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

相關(guān)文章

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

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

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

    在Docker容器中部署MSSQL

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

    Docker核心概念與鏡像倉庫操作指南

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

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

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

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

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

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

    在使用Docker進(jìn)行開發(fā)和部署時,有時需要將容器內(nèi)生成的構(gòu)建工件復(fù)制到主機(jī)上,例如,在持續(xù)集成服務(wù)器上使用Docker構(gòu)建依賴項(xiàng),而不希望在代理服務(wù)器上安裝所有運(yùn)行時和庫,所以本文給大家介紹了從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教程

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

    Dockerfile常用命令的使用簡介

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

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

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

最新評論

长子县| 济宁市| 密云县| 孝义市| 霍林郭勒市| 永新县| 扶沟县| 赣榆县| 博爱县| 松滋市| 乳山市| 平乐县| 茂名市| 钟祥市| 成安县| 鹤峰县| 剑阁县| 蓬安县| 柳河县| 梧州市| 德昌县| 牡丹江市| 宜川县| 武川县| 阳原县| 观塘区| 夏邑县| 西盟| 石棉县| 洞口县| 云安县| 衡山县| 甘南县| 措美县| 宾阳县| 余江县| 新疆| 焦作市| 洪洞县| 古蔺县| 富平县|