[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/docker-oom":3,"mdc-y05y6g-key":577,"mdc--4w0d86-key":587,"mdc-odilri-key":618,"mdc--hccgrh-key":626,"mdc-cq5y7h-key":642,"mdc-9zhyxw-key":657,"mdc--849781-key":697,"related-/errors/linux/docker-oom-restart,/guides/linux/docker-memory-limits,/errors/linux/docker-killed":735,"mdc-pnhzbh-key":2077,"mdc--1t72i6-key":2119,"mdc-bkbbr0-key":2160},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":502,"code":503,"createdAt":504,"description":505,"difficulty":506,"draft":507,"estimatedTime":508,"extension":509,"faq":510,"howToSteps":523,"howToTotalTime":542,"image":502,"keywords":543,"locale":553,"meta":554,"navigation":555,"path":556,"platform":557,"related":558,"section":562,"seo":563,"severity":564,"stem":565,"summary":566,"tags":567,"twitterCreator":502,"twitterSite":502,"type":575,"updatedAt":504,"__hash__":576},"content_ru/errors/linux/docker-oom.md","Docker OOM: исправление ошибки нехватки памяти и перезапуск контейнеров",[7,8,9,10],"Docker 20.10+ (Linux)","Docker 23.04+ (Linux)","Ubuntu 22.04 LTS","CentOS 8","FixPedia Team",{"type":13,"value":14,"toc":488},"minimark",[15,20,34,44,47,51,97,101,109,112,152,168,172,186,257,261,264,288,300,304,307,325,332,340,345,427,430,433,437,481,484],[16,17,19],"h2",{"id":18},"что-означает-ошибка-oom","Что означает ошибка OOM",[21,22,23,24,28,29,33],"p",{},"Ошибка ",[25,26,27],"strong",{},"Docker OOM"," (Out‑of‑Memory) возникает, когда выделенный контейнеру объем памяти исчерпан, и Linux принудительно останавливает процесс. Docker завершает контейнер со статусом ",[30,31,32],"code",{},"Exit Code 137"," и выводит сообщение примерно следующего содержания:",[35,36,41],"pre",{"className":37,"code":39,"language":40},[38],"language-text","Error response from daemon: Out of memory: Kill your container.\n","text",[30,42,39],{"__ignoreMap":43},"",[21,45,46],{},"Контейнер останавливается, чтобы не повлиять на хост, но это приводит к недоступности приложения.",[16,48,50],{"id":49},"причины-возникновения","Причины возникновения",[52,53,54,73,79,85,91],"ol",{},[55,56,57,60,61,64,65,68,69,72],"li",{},[25,58,59],{},"Недостаточный лимит памяти"," – установлен слишком низкий ",[30,62,63],{},"--memory"," или ",[30,66,67],{},"memory.limit"," в ",[30,70,71],{},"docker-compose.yml",".",[55,74,75,78],{},[25,76,77],{},"Утечка памяти в приложении"," – код постепенно расходует RAM без освобождения.",[55,80,81,84],{},[25,82,83],{},"Недостаток системной памяти"," – хост перегружен другими процессами, оставляя мало ресурсов для контейнеров.",[55,86,87,90],{},[25,88,89],{},"Отсутствие свопа"," – контейнер не может использовать своп-память, поэтому любое превышение лимита приводит к OOM.",[55,92,93,96],{},[25,94,95],{},"Низкий приоритет OOM"," – контейнер имеет высокий приоритет для системного OOM-киллера, и его убивают первым.",[16,98,100],{"id":99},"способы-решения","Способы решения",[102,103,105,106],"h3",{"id":104},"способ-1-увеличить-лимит-памяти-через-docker-run","Способ 1: Увеличить лимит памяти через ",[30,107,108],{},"docker run",[21,110,111],{},"Если ошибка возникает при запуске контейнера, задайте больший объем памяти:",[35,113,117],{"className":114,"code":115,"language":116,"meta":43,"style":43},"language-bash shiki shiki-themes github-light github-dark","# Запуск контейнера с 2 GB RAM и 2.5 GB свопа\ndocker run -d --memory=2g --memory-swap=2.5g your_image\n","bash",[30,118,119,128],{"__ignoreMap":43},[120,121,124],"span",{"class":122,"line":123},"line",1,[120,125,127],{"class":126},"sJ8bj","# Запуск контейнера с 2 GB RAM и 2.5 GB свопа\n",[120,129,131,135,139,143,146,149],{"class":122,"line":130},2,[120,132,134],{"class":133},"sScJk","docker",[120,136,138],{"class":137},"sZZnC"," run",[120,140,142],{"class":141},"sj4cs"," -d",[120,144,145],{"class":141}," --memory=2g",[120,147,148],{"class":141}," --memory-swap=2.5g",[120,150,151],{"class":137}," your_image\n",[153,154,155],"blockquote",{},[21,156,157,160,161,164,165,167],{},[25,158,159],{},"💡 Совет:"," Значение ",[30,162,163],{},"--memory-swap"," может быть больше ",[30,166,63],{},", чтобы позволить использование свопа при переполнении лимита.",[102,169,171],{"id":170},"способ-2-настроить-своп-память","Способ 2: Настроить своп-память",[21,173,174,175,178,179,181,182,185],{},"Для существующих контейнеров своп можно добавить с помощью ",[30,176,177],{},"docker run --memory-swap",". В ",[30,180,71],{}," используйте ",[30,183,184],{},"deploy.resources.limits.memory",":",[35,187,191],{"className":188,"code":189,"language":190,"meta":43,"style":43},"language-yaml shiki shiki-themes github-light github-dark","services:\n  web:\n    image: your_image\n    deploy:\n      resources:\n        limits:\n          memory: 2G\n","yaml",[30,192,193,203,210,222,230,238,246],{"__ignoreMap":43},[120,194,195,199],{"class":122,"line":123},[120,196,198],{"class":197},"s9eBZ","services",[120,200,202],{"class":201},"sVt8B",":\n",[120,204,205,208],{"class":122,"line":130},[120,206,207],{"class":197},"  web",[120,209,202],{"class":201},[120,211,213,216,219],{"class":122,"line":212},3,[120,214,215],{"class":197},"    image",[120,217,218],{"class":201},": ",[120,220,221],{"class":137},"your_image\n",[120,223,225,228],{"class":122,"line":224},4,[120,226,227],{"class":197},"    deploy",[120,229,202],{"class":201},[120,231,233,236],{"class":122,"line":232},5,[120,234,235],{"class":197},"      resources",[120,237,202],{"class":201},[120,239,241,244],{"class":122,"line":240},6,[120,242,243],{"class":197},"        limits",[120,245,202],{"class":201},[120,247,249,252,254],{"class":122,"line":248},7,[120,250,251],{"class":197},"          memory",[120,253,218],{"class":201},[120,255,256],{"class":137},"2G\n",[102,258,260],{"id":259},"способ-3-оптимизировать-приложение-внутри-контейнера","Способ 3: Оптимизировать приложение внутри контейнера",[21,262,263],{},"Уменьшение потребления памяти часто эффективнее, чем увеличение лимитов:",[265,266,267,270,277],"ul",{},[55,268,269],{},"Закройте неиспользуемые соединения или базы данных.",[55,271,272,273,276],{},"Используйте ",[30,274,275],{},"ulimit -v 3000000"," перед запуском приложения.",[55,278,279,280,283,284,287],{},"Проверьте код на утечки памяти (например, ",[30,281,282],{},"valgrind"," в Python или ",[30,285,286],{},"heapdump"," в Node.js).",[153,289,290],{},[21,291,292,295,296,299],{},[25,293,294],{},"⚠️ Важно:"," Тестирование под нагрузкой (",[30,297,298],{},"stress-test",") поможет выявить скрытые утечки.",[102,301,303],{"id":302},"способ-4-настроить-oom-адвоката","Способ 4: Настроить OOM-адвоката",[21,305,306],{},"Docker позволяет снизить приоритет контейнера при нехватке памяти хоста:",[35,308,310],{"className":114,"code":309,"language":116,"meta":43,"style":43},"docker run -d --oom-score-adj=-500 your_image\n",[30,311,312],{"__ignoreMap":43},[120,313,314,316,318,320,323],{"class":122,"line":123},[120,315,134],{"class":133},[120,317,138],{"class":137},[120,319,142],{"class":141},[120,321,322],{"class":141}," --oom-score-adj=-500",[120,324,151],{"class":137},[21,326,327,328,331],{},"Значение ",[30,329,330],{},"-500"," делает контейнер менее приоритетным для системного OOM-киллера.",[102,333,335,336,339],{"id":334},"способ-5-использовать-docker-compose-с-резервированием-памяти","Способ 5: Использовать ",[30,337,338],{},"docker compose"," с резервированием памяти",[21,341,342,343,185],{},"Для многосервисных приложений задайте общий лимит в ",[30,344,71],{},[35,346,348],{"className":188,"code":347,"language":190,"meta":43,"style":43},"version: '3.8'\nservices:\n  app:\n    image: your_image\n    deploy:\n      resources:\n        limits:\n          memory: 4G\n        reservations:\n          memory: 512M\n",[30,349,350,360,366,373,381,387,393,399,409,417],{"__ignoreMap":43},[120,351,352,355,357],{"class":122,"line":123},[120,353,354],{"class":197},"version",[120,356,218],{"class":201},[120,358,359],{"class":137},"'3.8'\n",[120,361,362,364],{"class":122,"line":130},[120,363,198],{"class":197},[120,365,202],{"class":201},[120,367,368,371],{"class":122,"line":212},[120,369,370],{"class":197},"  app",[120,372,202],{"class":201},[120,374,375,377,379],{"class":122,"line":224},[120,376,215],{"class":197},[120,378,218],{"class":201},[120,380,221],{"class":137},[120,382,383,385],{"class":122,"line":232},[120,384,227],{"class":197},[120,386,202],{"class":201},[120,388,389,391],{"class":122,"line":240},[120,390,235],{"class":197},[120,392,202],{"class":201},[120,394,395,397],{"class":122,"line":248},[120,396,243],{"class":197},[120,398,202],{"class":201},[120,400,402,404,406],{"class":122,"line":401},8,[120,403,251],{"class":197},[120,405,218],{"class":201},[120,407,408],{"class":137},"4G\n",[120,410,412,415],{"class":122,"line":411},9,[120,413,414],{"class":197},"        reservations",[120,416,202],{"class":201},[120,418,420,422,424],{"class":122,"line":419},10,[120,421,251],{"class":197},[120,423,218],{"class":201},[120,425,426],{"class":137},"512M\n",[21,428,429],{},"Это гарантирует, что сервис получит хотя бы 512 MB и не более 4 GB.",[431,432],"in-article-ad",{},[16,434,436],{"id":435},"профилактика","Профилактика",[265,438,439,449,463,469,475],{},[55,440,441,444,445,448],{},[25,442,443],{},"Профилируйте память"," перед запуском в продакшн (",[30,446,447],{},"docker stats"," + внутренние инструменты).",[55,450,451,454,455,458,459,462],{},[25,452,453],{},"Настройте мониторинг"," для отслеживания роста потребления (",[30,456,457],{},"prometheus","/",[30,460,461],{},"grafana",").",[55,464,465,468],{},[25,466,467],{},"Регулярно пересматривайте лимиты"," по мере роста нагрузки.",[55,470,471,474],{},[25,472,473],{},"Включите своп"," или увеличьте объем памяти на хосте, если контейнеры часто достигают лимита.",[55,476,477,480],{},[25,478,479],{},"Обновляйте зависимости"," и следите за исправлениями, устраняющими утечки памяти.",[21,482,483],{},"Выполнив эти рекомендации, вы сократите вероятность возникновения ошибки Docker OOM и стабилизируете работу контейнеров.",[485,486,487],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":43,"searchDepth":130,"depth":130,"links":489},[490,491,492,501],{"id":18,"depth":130,"text":19},{"id":49,"depth":130,"text":50},{"id":99,"depth":130,"text":100,"children":493},[494,496,497,498,499],{"id":104,"depth":212,"text":495},"Способ 1: Увеличить лимит памяти через docker run",{"id":170,"depth":212,"text":171},{"id":259,"depth":212,"text":260},{"id":302,"depth":212,"text":303},{"id":334,"depth":212,"text":500},"Способ 5: Использовать docker compose с резервированием памяти",{"id":435,"depth":130,"text":436},null,"OOM","2026-07-31 12:59:55","Узнайте, как быстро устранить ошибку Docker OOM на Linux. Пошаговая инструкция по увеличению лимита памяти и перезапуску контейнеров за 5 минут.","medium",false,"5-10 мин","md",[511,514,517,520],{"question":512,"answer":513},"Что означает ошибка Docker OOM?","Docker OOM означает, что контейнер был принудительно остановлен системой из-за исчерпания выделенной ему памяти. Docker завершает процесс с кодом 137 (OOM kill).",{"question":515,"answer":516},"Как диагностировать OOM в Docker?","Выполните `docker stats`, чтобы увидеть использование памяти, и просмотрите логи контейнера (`docker logs \u003Ccontainer>`). Также проверьте системный dmesg (`dmesg | grep OOM`).",{"question":518,"answer":519},"Можно ли предотвратить OOM при работе с Docker?","Да. Установите достаточные лимиты памяти, включите своп, оптимизируйте приложение и используйте механизмы резервного копирования OOM-адвоката.",{"question":521,"answer":522},"Почему контейнер получает сигнал OOM при достаточном объеме памяти?","Возможно, установлен слишком низкий лимит `--memory`, работает другой процесс, или в контейнере произошла утечка памяти.",[524,527,530,533,536,539],{"name":525,"text":526},"Проверить использование памяти","Выполните `docker stats`, чтобы увидеть текущие показатели потребления памяти контейнера. Это поможет определить, действительно ли нехватка памяти является причиной сбоя.",{"name":528,"text":529},"Увеличить лимит памяти через docker run","Запустите контейнер с большим объёмом памяти:\n\n```bash\n# Пример для контейнера на основе ubuntu\ndocker run -d --memory=2g --memory-swap=2.5g your_image\n```\n\nЗдесь `--memory` задает жёсткий лимит, `--memory-swap` позволяет использовать своп-память.",{"name":531,"text":532},"Настроить своп-память","Добавьте своп к контейнеру:\n\n```bash\ndocker run -d --memory=2g --memory-swap=3g your_image\n```\n\nИли отредактируйте `docker-compose.yml`:\n\n```yaml\nservices:\n  app:\n    image: your_image\n    deploy:\n      resources:\n        limits:\n          memory: 2G\n```",{"name":534,"text":535},"Оптимизировать приложение внутри контейнера","Уменьшите потребление памяти:\n\n- Освободите память, закрыв неиспользуемые соединения.\n- Используйте `ulimit -v`, чтобы ограничить объем виртуальной памяти.\n- Проверьте утечки памяти с помощью инструментов профилирования (например, `valgrind`).",{"name":537,"text":538},"Настроить OOM-адвоката","Включите OOM-адвоката в контейнере, добавив `oom_score_adj=-500` в `docker run`:\n\n```bash\ndocker run -d --oom-score-adj=-500 your_image\n```\n\nЭто снижает приоритет контейнера при нехватке памяти хоста.",{"name":540,"text":541},"Перезапустить контейнеры и проверить логи","После внесения изменений перезапустите сервисы (`docker compose restart` или `docker restart \u003Ccontainer>`). Затем проверьте логи на предмет `Out of memory` (`docker logs \u003Ccontainer>`).","PT10M",[544,545,546,547,548,549,550,551,552],"docker oom ошибка","docker out of memory","docker остановился из-за нехватки памяти","docker OOM ошибка 137","увеличить лимит памяти docker","docker restart after OOM","docker kill oom","docker compose oom","docker container OOM log","ru_RU",{},true,"/errors/linux/docker-oom","linux",[559,560,561],"/errors/linux/docker-oom-restart","/guides/linux/docker-memory-limits","/errors/linux/docker-killed","Ошибки Docker",{"title":5,"description":505},"high","errors/linux/docker-oom","Статья объясняет, почему Docker выдает ошибку OOM на хостах Linux, как определить ее причину и предлагает несколько эффективных способов ее устранить, включая изменение лимитов памяти и оптимизацию работы контейнеров.",[568,569,570,571,572,573,574],"Docker","Linux","memory","troubleshooting","containers","docker-oom","docker-ошибка","error","3enkof4aURj_JpcMsCPiClZQ_guGu-3OvfDox0UfPAs",{"data":578,"body":579},{},{"type":580,"children":581},"root",[582],{"type":583,"tag":21,"props":584,"children":585},"element",{},[586],{"type":40,"value":513},{"data":588,"body":589},{},{"type":580,"children":590},[591],{"type":583,"tag":21,"props":592,"children":593},{},[594,596,601,603,609,611,617],{"type":40,"value":595},"Выполните ",{"type":583,"tag":30,"props":597,"children":599},{"className":598},[],[600],{"type":40,"value":447},{"type":40,"value":602},", чтобы увидеть использование памяти, и просмотрите логи контейнера (",{"type":583,"tag":30,"props":604,"children":606},{"className":605},[],[607],{"type":40,"value":608},"docker logs \u003Ccontainer>",{"type":40,"value":610},"). Также проверьте системный dmesg (",{"type":583,"tag":30,"props":612,"children":614},{"className":613},[],[615],{"type":40,"value":616},"dmesg | grep OOM",{"type":40,"value":462},{"data":619,"body":620},{},{"type":580,"children":621},[622],{"type":583,"tag":21,"props":623,"children":624},{},[625],{"type":40,"value":519},{"data":627,"body":628},{},{"type":580,"children":629},[630],{"type":583,"tag":21,"props":631,"children":632},{},[633,635,640],{"type":40,"value":634},"Возможно, установлен слишком низкий лимит ",{"type":583,"tag":30,"props":636,"children":638},{"className":637},[],[639],{"type":40,"value":63},{"type":40,"value":641},", работает другой процесс, или в контейнере произошла утечка памяти.",{"data":643,"body":644},{},{"type":580,"children":645},[646],{"type":583,"tag":21,"props":647,"children":648},{},[649,650,655],{"type":40,"value":595},{"type":583,"tag":30,"props":651,"children":653},{"className":652},[],[654],{"type":40,"value":447},{"type":40,"value":656},", чтобы увидеть текущие показатели потребления памяти контейнера. Это поможет определить, действительно ли нехватка памяти является причиной сбоя.",{"data":658,"body":659},{},{"type":580,"children":660},[661,666],{"type":583,"tag":21,"props":662,"children":663},{},[664],{"type":40,"value":665},"Уменьшите потребление памяти:",{"type":583,"tag":265,"props":667,"children":668},{},[669,674,686],{"type":583,"tag":55,"props":670,"children":671},{},[672],{"type":40,"value":673},"Освободите память, закрыв неиспользуемые соединения.",{"type":583,"tag":55,"props":675,"children":676},{},[677,678,684],{"type":40,"value":272},{"type":583,"tag":30,"props":679,"children":681},{"className":680},[],[682],{"type":40,"value":683},"ulimit -v",{"type":40,"value":685},", чтобы ограничить объем виртуальной памяти.",{"type":583,"tag":55,"props":687,"children":688},{},[689,691,696],{"type":40,"value":690},"Проверьте утечки памяти с помощью инструментов профилирования (например, ",{"type":583,"tag":30,"props":692,"children":694},{"className":693},[],[695],{"type":40,"value":282},{"type":40,"value":462},{"data":698,"body":699},{},{"type":580,"children":700},[701],{"type":583,"tag":21,"props":702,"children":703},{},[704,706,712,713,719,721,727,729,734],{"type":40,"value":705},"После внесения изменений перезапустите сервисы (",{"type":583,"tag":30,"props":707,"children":709},{"className":708},[],[710],{"type":40,"value":711},"docker compose restart",{"type":40,"value":64},{"type":583,"tag":30,"props":714,"children":716},{"className":715},[],[717],{"type":40,"value":718},"docker restart \u003Ccontainer>",{"type":40,"value":720},"). Затем проверьте логи на предмет ",{"type":583,"tag":30,"props":722,"children":724},{"className":723},[],[725],{"type":40,"value":726},"Out of memory",{"type":40,"value":728}," (",{"type":583,"tag":30,"props":730,"children":732},{"className":731},[],[733],{"type":40,"value":608},{"type":40,"value":462},[736,1238],{"id":737,"title":738,"appliesTo":739,"author":11,"body":742,"canonical":502,"code":757,"createdAt":1185,"description":1186,"difficulty":506,"draft":507,"estimatedTime":508,"extension":509,"faq":1187,"howToSteps":1200,"howToTotalTime":542,"image":502,"keywords":1219,"locale":553,"meta":1227,"navigation":555,"path":559,"platform":557,"related":1228,"section":562,"seo":1232,"severity":564,"stem":1233,"summary":1234,"tags":1235,"twitterCreator":502,"twitterSite":502,"type":575,"updatedAt":1185,"__hash__":1237},"content_ru/errors/linux/docker-oom-restart.md","Docker OOM restart: как исправить ошибку нехватки памяти за 5 минут",[740,9,741],"Docker Engine 20.10–24.04","CentOS 8 Stream",{"type":13,"value":743,"toc":1174},[744,748,767,773,779,781,814,816,820,938,942,945,968,980,984,1024,1028,1037,1127,1129,1131,1168,1171],[16,745,747],{"id":746},"что-означает-ошибка-docker-oom-перезапуск","Что означает ошибка Docker OOM перезапуск",[21,749,750,751,754,755,758,759,762,763,766],{},"Контейнер Docker может быть ",[25,752,753],{},"перезапущен"," (код завершения работы ",[30,756,757],{},"137","), когда операционная система сигнализирует ядру Docker о ",[25,760,761],{},"нехватке памяти"," (Out‑Of‑Memory, OOM). Docker отмечает такой процесс как ",[30,764,765],{},"OOMKilled",". Типичные логи содержат сообщение:",[35,768,771],{"className":769,"code":770,"language":40},[38],"ОШИБКА: Контейнер ... был остановлен из-за нехватки памяти\n",[30,772,770],{"__ignoreMap":43},[21,774,775,776,778],{},"Эта ситуация возникает, когда реальное использование памяти контейнера превышает установленный им лимит (",[30,777,63],{},"), и хост не может выделить дополнительную память без риска краха всей системы.",[16,780,50],{"id":49},[265,782,783,797,803,808],{},[55,784,785,787,788,790,791,68,794,462],{},[25,786,59],{}," в команде запуска (",[30,789,63],{},", ",[30,792,793],{},"mem_limit",[30,795,796],{},"docker‑compose.yml",[55,798,799,802],{},[25,800,801],{},"Высокое потребление памяти"," самим приложением или собранными зависимостями.",[55,804,805,807],{},[25,806,89],{}," на хосте, из-за чего ядро убивает процесс при исчерпании физической памяти.",[55,809,810,813],{},[25,811,812],{},"Конкуренция ресурсов"," на хосте: другие контейнеры или системы также используют основную память.",[16,815,100],{"id":99},[102,817,819],{"id":818},"способ-1-увеличить-лимит-памяти","Способ 1: Увеличить лимит памяти",[52,821,822,869,898],{},[55,823,824,829,830],{},[25,825,826,827],{},"Редактируйте ",[30,828,796],{}," (или команду запуска) и добавьте лимит:",[35,831,833],{"className":188,"code":832,"language":190,"meta":43,"style":43},"services:\n  app:\n    image: myapp\n    mem_limit: 2g   # или memory: \"2g\"\n",[30,834,835,841,847,856],{"__ignoreMap":43},[120,836,837,839],{"class":122,"line":123},[120,838,198],{"class":197},[120,840,202],{"class":201},[120,842,843,845],{"class":122,"line":130},[120,844,370],{"class":197},[120,846,202],{"class":201},[120,848,849,851,853],{"class":122,"line":212},[120,850,215],{"class":197},[120,852,218],{"class":201},[120,854,855],{"class":137},"myapp\n",[120,857,858,861,863,866],{"class":122,"line":224},[120,859,860],{"class":197},"    mem_limit",[120,862,218],{"class":201},[120,864,865],{"class":137},"2g",[120,867,868],{"class":126},"   # или memory: \"2g\"\n",[55,870,871,874,875],{},[25,872,873],{},"Перестройте и запустите"," сервис:",[35,876,878],{"className":114,"code":877,"language":116,"meta":43,"style":43},"docker-compose down\ndocker-compose up -d\n",[30,879,880,888],{"__ignoreMap":43},[120,881,882,885],{"class":122,"line":123},[120,883,884],{"class":133},"docker-compose",[120,886,887],{"class":137}," down\n",[120,889,890,892,895],{"class":122,"line":130},[120,891,884],{"class":133},[120,893,894],{"class":137}," up",[120,896,897],{"class":141}," -d\n",[55,899,900,903,904],{},[25,901,902],{},"Проверьте"," новый лимит:",[35,905,907],{"className":114,"code":906,"language":116,"meta":43,"style":43},"docker inspect \u003Ccontainer> | grep MemoryLimit\n",[30,908,909],{"__ignoreMap":43},[120,910,911,913,916,920,923,926,929,932,935],{"class":122,"line":123},[120,912,134],{"class":133},[120,914,915],{"class":137}," inspect",[120,917,919],{"class":918},"szBVR"," \u003C",[120,921,922],{"class":137},"containe",[120,924,925],{"class":201},"r",[120,927,928],{"class":918},">",[120,930,931],{"class":918}," |",[120,933,934],{"class":133}," grep",[120,936,937],{"class":137}," MemoryLimit\n",[102,939,941],{"id":940},"способ-2-обновить-лимит-для-работающего-контейнера","Способ 2: Обновить лимит для работающего контейнера",[21,943,944],{},"Если контейнер уже запущен, вы можете изменить лимит памяти без пересоздания:",[35,946,948],{"className":114,"code":947,"language":116,"meta":43,"style":43},"docker update --memory=2g \u003Ccontainer>\n",[30,949,950],{"__ignoreMap":43},[120,951,952,954,957,959,961,963,965],{"class":122,"line":123},[120,953,134],{"class":133},[120,955,956],{"class":137}," update",[120,958,145],{"class":141},[120,960,919],{"class":918},[120,962,922],{"class":137},[120,964,925],{"class":201},[120,966,967],{"class":918},">\n",[153,969,970],{},[21,971,972,973,976,977,979],{},"💡 ",[25,974,975],{},"Совет:"," После изменения лимита выполните ",[30,978,718],{}," для немедленного применения (если контейнер не перезапускается автоматически).",[102,981,983],{"id":982},"способ-3-оптимизировать-приложение","Способ 3: Оптимизировать приложение",[52,985,986,992,998],{},[55,987,988,991],{},[25,989,990],{},"Оптимизируйте код"," – используйте эффективные алгоритмы, закэшируйте часто используемые данные.",[55,993,994,997],{},[25,995,996],{},"Настройте пулы соединений"," и ограничите размер кэшей баз данных.",[55,999,1000,1003,1004],{},[25,1001,1002],{},"Перезапустите контейнер"," после изменений:",[35,1005,1007],{"className":114,"code":1006,"language":116,"meta":43,"style":43},"docker restart \u003Ccontainer>\n",[30,1008,1009],{"__ignoreMap":43},[120,1010,1011,1013,1016,1018,1020,1022],{"class":122,"line":123},[120,1012,134],{"class":133},[120,1014,1015],{"class":137}," restart",[120,1017,919],{"class":918},[120,1019,922],{"class":137},[120,1021,925],{"class":201},[120,1023,967],{"class":918},[102,1025,1027],{"id":1026},"способ-4-добавить-своп-память-временный-вариант","Способ 4: Добавить своп-память (временный вариант)",[153,1029,1030],{},[21,1031,1032,1033,1036],{},"⚠️ ",[25,1034,1035],{},"Важно:"," Использование свопа снижает производительность, используйте только в крайнем случае.",[52,1038,1039,1102],{},[55,1040,1041,1044,1045],{},[25,1042,1043],{},"Добавьте своп-раздел"," или файл на хосте:",[35,1046,1048],{"className":114,"code":1047,"language":116,"meta":43,"style":43},"fallocate -l 2G /swapfile\nchmod 600 /swapfile\nmkswap /swapfile\nswapon /swapfile\necho '/swapfile none swap sw 0 0' >> /etc/fstab\n",[30,1049,1050,1064,1074,1081,1088],{"__ignoreMap":43},[120,1051,1052,1055,1058,1061],{"class":122,"line":123},[120,1053,1054],{"class":133},"fallocate",[120,1056,1057],{"class":141}," -l",[120,1059,1060],{"class":137}," 2G",[120,1062,1063],{"class":137}," /swapfile\n",[120,1065,1066,1069,1072],{"class":122,"line":130},[120,1067,1068],{"class":133},"chmod",[120,1070,1071],{"class":141}," 600",[120,1073,1063],{"class":137},[120,1075,1076,1079],{"class":122,"line":212},[120,1077,1078],{"class":133},"mkswap",[120,1080,1063],{"class":137},[120,1082,1083,1086],{"class":122,"line":224},[120,1084,1085],{"class":133},"swapon",[120,1087,1063],{"class":137},[120,1089,1090,1093,1096,1099],{"class":122,"line":232},[120,1091,1092],{"class":141},"echo",[120,1094,1095],{"class":137}," '/swapfile none swap sw 0 0'",[120,1097,1098],{"class":918}," >>",[120,1100,1101],{"class":137}," /etc/fstab\n",[55,1103,1104,1110,1111],{},[25,1105,1106,1107],{},"Настройте ",[30,1108,1109],{},"vm.swappiness"," для контроля использования свопа:",[35,1112,1114],{"className":114,"code":1113,"language":116,"meta":43,"style":43},"sysctl vm.swappiness=10\n",[30,1115,1116],{"__ignoreMap":43},[120,1117,1118,1121,1124],{"class":122,"line":123},[120,1119,1120],{"class":133},"sysctl",[120,1122,1123],{"class":137}," vm.swappiness=",[120,1125,1126],{"class":141},"10\n",[431,1128],{},[16,1130,436],{"id":435},[265,1132,1133,1142,1148,1154,1162],{},[55,1134,1135,1138,1139,1141],{},[25,1136,1137],{},"Мониторьте потребление"," с помощью ",[30,1140,447],{}," и визуализируйте графики в Grafana или Prometheus.",[55,1143,1144,1147],{},[25,1145,1146],{},"Установите алерты"," при превышении 80 % от лимита памяти.",[55,1149,1150,1153],{},[25,1151,1152],{},"Используйте образы с минимальным размером"," и удаляйте ненужные зависимости.",[55,1155,1156,728,1159,1161],{},[25,1157,1158],{},"Настройте резервную память",[30,1160,163],{},") для предотвращения внезапных перезапусков.",[55,1163,1164,1167],{},[25,1165,1166],{},"Регулярно обновляйте Docker"," и драйверы хоста для исправлений, связанных с обработкой памяти.",[21,1169,1170],{},"Соблюдая эти рекомендации, вы снизите вероятность возникновения OOM-ситуаций и стабилизируете работу контейнеров Docker.",[485,1172,1173],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":43,"searchDepth":130,"depth":130,"links":1175},[1176,1177,1178,1184],{"id":746,"depth":130,"text":747},{"id":49,"depth":130,"text":50},{"id":99,"depth":130,"text":100,"children":1179},[1180,1181,1182,1183],{"id":818,"depth":212,"text":819},{"id":940,"depth":212,"text":941},{"id":982,"depth":212,"text":983},{"id":1026,"depth":212,"text":1027},{"id":435,"depth":130,"text":436},"2026-08-08 10:48:15","Узнайте, как устранить перезапуск контейнеров Docker из-за нехватки памяти (OOM). Пошаговая инструкция по увеличению лимитов памяти и оптимизации за 5 минут.",[1188,1191,1194,1197],{"question":1189,"answer":1190},"Почему контейнер Docker перезапускается из-за OOM?","Docker останавливает контейнер, когда он превышает установленный лимит памяти, и перезапускает его, если включено автономное восстановление. Это приводит к коду завершения работы 137.",{"question":1192,"answer":1193},"Как проверить, что перезапуск вызван нехваткой памяти?","Запустите `docker inspect \u003Ccontainer>` и проверьте `State.ExitCode` (обычно 137) и логи `docker logs \u003Ccontainer>` на сообщение OOMKilled.",{"question":1195,"answer":1196},"Как увеличить лимит памяти для контейнера?","Используйте `--memory=...` при запуске или отредактируйте `docker-compose.yml`, либо установите лимит через `docker update --memory=... \u003Ccontainer>`.",{"question":1198,"answer":1199},"Как предотвратить будущие OOM-ситуации?","Оптимизируйте приложение, используйте резервную память, настройте своп-память, мониторьте потребление через `docker stats` и настройте ресурсы на хосте.",[1201,1204,1207,1210,1213,1216],{"name":1202,"text":1203},"Проверить текущий лимит памяти","Запустите `docker stats \u003Ccontainer>` или `docker inspect \u003Ccontainer>` для просмотра текущего лимита (`MemoryLimit`).",{"name":1205,"text":1206},"Увеличить лимит памяти","Отредактируйте `docker-compose.yml`, добавив `mem_limit: 2g`, или запустите контейнер с `--memory=2g`. Перезапустите сервис.",{"name":1208,"text":1209},"Обновить лимит для работающего контейнера","Выполните `docker update --memory=2g \u003Ccontainer>` для немедленного применения нового лимита.",{"name":1211,"text":1212},"Оптимизировать приложение","Уменьшите использование памяти в коде, используйте пулы соединений, закэшируйте данные, и перезапустите контейнер.",{"name":1214,"text":1215},"Добавить своп-память (временный вариант)","На хосте отредактируйте `/etc/fstab`, добавьте своп-раздел, запустите `swapon -a`.",{"name":1217,"text":1218},"Проверить логи после изменений","Запустите `docker logs \u003Ccontainer>` и убедитесь, что OOM-сообщения больше не появляются.",[1220,1221,1222,1223,1224,1225,1226],"Docker OOM restart","контейнер Docker нехватка памяти","перезапуск Docker из-за OOM","код ошибки 137 Docker","лимиты памяти Docker","docker run OOM","oom-restart Docker",{},[1229,1230,1231],"/errors/linux/docker-memory-limit","/errors/linux/docker-container-crash","/guides/linux/docker-run",{"title":738,"description":1186},"errors/linux/docker-oom-restart","Статья объясняет, почему Docker контейнеры перезапускаются при исчерпании памяти (OOM), и показывает несколько проверенных способов решить проблему. Вы узнаете, как настроить лимиты памяти, оптимизировать контейнеры и предотвратить будущие перезапуски.",[134,557,1236,570],"oom","q9MBcgEdgjsReHNWlQfWcjE_09kFYrGs8pxR6loMEKY",{"id":1239,"title":1240,"appliesTo":1241,"author":11,"body":1245,"canonical":502,"code":502,"createdAt":2023,"description":2024,"difficulty":506,"draft":507,"estimatedTime":508,"extension":509,"faq":2025,"howToSteps":2038,"howToTotalTime":542,"image":502,"keywords":2057,"locale":553,"meta":2065,"navigation":555,"path":560,"platform":557,"related":2066,"section":2069,"seo":2070,"severity":502,"stem":2071,"summary":2072,"tags":2073,"twitterCreator":502,"twitterSite":502,"type":2075,"updatedAt":2023,"__hash__":2076},"content_ru/guides/linux/docker-memory-limits.md","Полное руководство по установке лимитов памяти Docker на Ubuntu 22.04",[1242,1243,1244],"Docker 23.04","Ubuntu 22.04","Debian 12",{"type":13,"value":1246,"toc":2011},[1247,1251,1254,1258,1281,1285,1288,1501,1514,1518,1524,1573,1587,1597,1599,1603,1608,1623,1630,1647,1650,1672,1676,1679,1682,1755,1758,1774,1777,1781,1801,1804,1861,1871,1875,1880,1899,1907,1918,1923,1934,1938,1963,1966,1970,2005,2008],[16,1248,1250],{"id":1249},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,1252,1253],{},"Настройка лимитов памяти в Docker позволяет контролировать потребление ресурсов, предотвращать перегрузку хоста и обеспечивать стабильную работу приложений в контейнерах. С помощью лимитов вы можете гарантировать, что каждый контейнер будет использовать только allotted объем оперативной памяти, что особенно важно в общей среде с несколькими контейнерами.",[16,1255,1257],{"id":1256},"требования-подготовка","Требования / Подготовка",[265,1259,1260,1263,1266,1273],{},[55,1261,1262],{},"ОС: Ubuntu 22.04 (или Debian 12)",[55,1264,1265],{},"Docker версии 23.04 или выше",[55,1267,1268,1269,1272],{},"Права администратора (",[30,1270,1271],{},"sudo",") для установки пакетов и запуска контейнеров",[55,1274,1275,1276,790,1278,1280],{},"Базовое понимание команд Docker (",[30,1277,108],{},[30,1279,884],{},")",[16,1282,1284],{"id":1283},"шаг-1-установка-docker-если-не-установлен","Шаг 1: Установка Docker (если не установлен)",[21,1286,1287],{},"Если Docker уже установлен, пропустите этот шаг.",[35,1289,1291],{"className":114,"code":1290,"language":116,"meta":43,"style":43},"# Обновите список пакетов\nsudo apt update\n\n# Установите необходимые зависимости\nsudo apt install -y ca-certificates curl gnupg\n\n# Добавьте официальный ключ репозитория Docker\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg\n\n# Добавьте репозиторий Docker в apt\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\n# Установите Docker Engine, клиент и compose plugin\nsudo apt update\nsudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n\n# (Опционально) добавьте текущего пользователя в группу docker\nsudo usermod -aG docker $USER\n",[30,1292,1293,1298,1308,1313,1318,1339,1343,1348,1376,1380,1385,1427,1432,1438,1447,1473,1478,1484],{"__ignoreMap":43},[120,1294,1295],{"class":122,"line":123},[120,1296,1297],{"class":126},"# Обновите список пакетов\n",[120,1299,1300,1302,1305],{"class":122,"line":130},[120,1301,1271],{"class":133},[120,1303,1304],{"class":137}," apt",[120,1306,1307],{"class":137}," update\n",[120,1309,1310],{"class":122,"line":212},[120,1311,1312],{"emptyLinePlaceholder":555},"\n",[120,1314,1315],{"class":122,"line":224},[120,1316,1317],{"class":126},"# Установите необходимые зависимости\n",[120,1319,1320,1322,1324,1327,1330,1333,1336],{"class":122,"line":232},[120,1321,1271],{"class":133},[120,1323,1304],{"class":137},[120,1325,1326],{"class":137}," install",[120,1328,1329],{"class":141}," -y",[120,1331,1332],{"class":137}," ca-certificates",[120,1334,1335],{"class":137}," curl",[120,1337,1338],{"class":137}," gnupg\n",[120,1340,1341],{"class":122,"line":240},[120,1342,1312],{"emptyLinePlaceholder":555},[120,1344,1345],{"class":122,"line":248},[120,1346,1347],{"class":126},"# Добавьте официальный ключ репозитория Docker\n",[120,1349,1350,1353,1356,1359,1361,1364,1367,1370,1373],{"class":122,"line":401},[120,1351,1352],{"class":133},"curl",[120,1354,1355],{"class":141}," -fsSL",[120,1357,1358],{"class":137}," https://download.docker.com/linux/ubuntu/gpg",[120,1360,931],{"class":918},[120,1362,1363],{"class":133}," sudo",[120,1365,1366],{"class":137}," gpg",[120,1368,1369],{"class":141}," --dearmor",[120,1371,1372],{"class":141}," -o",[120,1374,1375],{"class":137}," /usr/share/keyrings/docker-archive-keyring.gpg\n",[120,1377,1378],{"class":122,"line":411},[120,1379,1312],{"emptyLinePlaceholder":555},[120,1381,1382],{"class":122,"line":419},[120,1383,1384],{"class":126},"# Добавьте репозиторий Docker в apt\n",[120,1386,1388,1390,1393,1396,1399,1402,1405,1408,1411,1413,1415,1418,1421,1424],{"class":122,"line":1387},11,[120,1389,1092],{"class":141},[120,1391,1392],{"class":137}," \"deb [arch=$(",[120,1394,1395],{"class":133},"dpkg",[120,1397,1398],{"class":141}," --print-architecture",[120,1400,1401],{"class":137},") signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(",[120,1403,1404],{"class":133},"lsb_release",[120,1406,1407],{"class":141}," -cs",[120,1409,1410],{"class":137},") stable\"",[120,1412,931],{"class":918},[120,1414,1363],{"class":133},[120,1416,1417],{"class":137}," tee",[120,1419,1420],{"class":137}," /etc/apt/sources.list.d/docker.list",[120,1422,1423],{"class":918}," >",[120,1425,1426],{"class":137}," /dev/null\n",[120,1428,1430],{"class":122,"line":1429},12,[120,1431,1312],{"emptyLinePlaceholder":555},[120,1433,1435],{"class":122,"line":1434},13,[120,1436,1437],{"class":126},"# Установите Docker Engine, клиент и compose plugin\n",[120,1439,1441,1443,1445],{"class":122,"line":1440},14,[120,1442,1271],{"class":133},[120,1444,1304],{"class":137},[120,1446,1307],{"class":137},[120,1448,1450,1452,1454,1456,1458,1461,1464,1467,1470],{"class":122,"line":1449},15,[120,1451,1271],{"class":133},[120,1453,1304],{"class":137},[120,1455,1326],{"class":137},[120,1457,1329],{"class":141},[120,1459,1460],{"class":137}," docker-ce",[120,1462,1463],{"class":137}," docker-ce-cli",[120,1465,1466],{"class":137}," containerd.io",[120,1468,1469],{"class":137}," docker-buildx-plugin",[120,1471,1472],{"class":137}," docker-compose-plugin\n",[120,1474,1476],{"class":122,"line":1475},16,[120,1477,1312],{"emptyLinePlaceholder":555},[120,1479,1481],{"class":122,"line":1480},17,[120,1482,1483],{"class":126},"# (Опционально) добавьте текущего пользователя в группу docker\n",[120,1485,1487,1489,1492,1495,1498],{"class":122,"line":1486},18,[120,1488,1271],{"class":133},[120,1490,1491],{"class":137}," usermod",[120,1493,1494],{"class":141}," -aG",[120,1496,1497],{"class":137}," docker",[120,1499,1500],{"class":201}," $USER\n",[153,1502,1503],{},[21,1504,972,1505,1507,1508,1511,1512,72],{},[25,1506,975],{}," После добавления в группу перезагрузите терминал или выполните ",[30,1509,1510],{},"newgrp docker",", чтобы начать использовать Docker без ",[30,1513,1271],{},[16,1515,1517],{"id":1516},"шаг-2-запуск-контейнера-с-жёстким-лимитом-памяти","Шаг 2: Запуск контейнера с жёстким лимитом памяти",[21,1519,1520,1521,1523],{},"При запуске контейнера укажите ",[30,1522,63],{},", чтобы ограничить объём используемой оперативной памяти.",[35,1525,1527],{"className":114,"code":1526,"language":116,"meta":43,"style":43},"docker run --name test-mem \\\n  --memory=512m \\\n  -d \\\n  alpine:3.18 \\\n  sleep 3600\n",[30,1528,1529,1544,1551,1558,1565],{"__ignoreMap":43},[120,1530,1531,1533,1535,1538,1541],{"class":122,"line":123},[120,1532,134],{"class":133},[120,1534,138],{"class":137},[120,1536,1537],{"class":141}," --name",[120,1539,1540],{"class":137}," test-mem",[120,1542,1543],{"class":141}," \\\n",[120,1545,1546,1549],{"class":122,"line":130},[120,1547,1548],{"class":141},"  --memory=512m",[120,1550,1543],{"class":141},[120,1552,1553,1556],{"class":122,"line":212},[120,1554,1555],{"class":141},"  -d",[120,1557,1543],{"class":141},[120,1559,1560,1563],{"class":122,"line":224},[120,1561,1562],{"class":137},"  alpine:3.18",[120,1564,1543],{"class":141},[120,1566,1567,1570],{"class":122,"line":232},[120,1568,1569],{"class":137},"  sleep",[120,1571,1572],{"class":141}," 3600\n",[265,1574,1575,1581],{},[55,1576,1577,1580],{},[30,1578,1579],{},"--memory=512m"," устанавливает жёсткий лимит в 512 МБ.",[55,1582,1583,1586],{},[30,1584,1585],{},"--memory-swap=512m"," (опционально) запрещает использование свопа, обеспечивая строгий контроль.",[153,1588,1589],{},[21,1590,1032,1591,1593,1594,1596],{},[25,1592,1035],{}," Лимит применяется к одному контейнеру; превышение может вызвать ",[30,1595,765],{}," и перезапуск контейнера.",[431,1598],{},[16,1600,1602],{"id":1601},"шаг-3-проверка-лимитов-с-помощью-docker-stats","Шаг 3: Проверка лимитов с помощью docker stats",[21,1604,1605,1606,72],{},"Чтобы убедиться, что лимит работает, используйте ",[30,1607,447],{},[35,1609,1611],{"className":114,"code":1610,"language":116,"meta":43,"style":43},"docker stats test-mem\n",[30,1612,1613],{"__ignoreMap":43},[120,1614,1615,1617,1620],{"class":122,"line":123},[120,1616,134],{"class":133},[120,1618,1619],{"class":137}," stats",[120,1621,1622],{"class":137}," test-mem\n",[21,1624,1625,1626,1629],{},"Столбец ",[25,1627,1628],{},"MEM"," показывает:",[265,1631,1632,1638],{},[55,1633,1634,1637],{},[25,1635,1636],{},"В использовании"," — текущее потребление памяти.",[55,1639,1640,1643,1644,462],{},[25,1641,1642],{},"Лимит"," — установленный предел (например, ",[30,1645,1646],{},"512 MiB",[21,1648,1649],{},"Вы также можете получить данные в формате JSON для скриптов:",[35,1651,1653],{"className":114,"code":1652,"language":116,"meta":43,"style":43},"docker stats --no-stream --format \"{{json .}}\" test-mem\n",[30,1654,1655],{"__ignoreMap":43},[120,1656,1657,1659,1661,1664,1667,1670],{"class":122,"line":123},[120,1658,134],{"class":133},[120,1660,1619],{"class":137},[120,1662,1663],{"class":141}," --no-stream",[120,1665,1666],{"class":141}," --format",[120,1668,1669],{"class":137}," \"{{json .}}\"",[120,1671,1622],{"class":137},[16,1673,1675],{"id":1674},"шаг-4-настройка-лимитов-через-docker-composeyml","Шаг 4: Настройка лимитов через docker-compose.yml",[21,1677,1678],{},"Для многоконтейнерных приложений удобнее использовать Docker Compose.",[21,1680,1681],{},"Добавьте конфигурацию в сервис:",[35,1683,1685],{"className":188,"code":1684,"language":190,"meta":43,"style":43},"version: \"3.9\"\nservices:\n  web:\n    image: nginx:1.23\n    mem_limit: 256m          # жёсткий лимит\n    mem_reservation: 128m    # безопасный порог\n    mem_swappiness: 60       # своп (опционально)\n",[30,1686,1687,1696,1702,1708,1717,1729,1742],{"__ignoreMap":43},[120,1688,1689,1691,1693],{"class":122,"line":123},[120,1690,354],{"class":197},[120,1692,218],{"class":201},[120,1694,1695],{"class":137},"\"3.9\"\n",[120,1697,1698,1700],{"class":122,"line":130},[120,1699,198],{"class":197},[120,1701,202],{"class":201},[120,1703,1704,1706],{"class":122,"line":212},[120,1705,207],{"class":197},[120,1707,202],{"class":201},[120,1709,1710,1712,1714],{"class":122,"line":224},[120,1711,215],{"class":197},[120,1713,218],{"class":201},[120,1715,1716],{"class":137},"nginx:1.23\n",[120,1718,1719,1721,1723,1726],{"class":122,"line":232},[120,1720,860],{"class":197},[120,1722,218],{"class":201},[120,1724,1725],{"class":137},"256m",[120,1727,1728],{"class":126},"          # жёсткий лимит\n",[120,1730,1731,1734,1736,1739],{"class":122,"line":240},[120,1732,1733],{"class":197},"    mem_reservation",[120,1735,218],{"class":201},[120,1737,1738],{"class":137},"128m",[120,1740,1741],{"class":126},"    # безопасный порог\n",[120,1743,1744,1747,1749,1752],{"class":122,"line":248},[120,1745,1746],{"class":197},"    mem_swappiness",[120,1748,218],{"class":201},[120,1750,1751],{"class":141},"60",[120,1753,1754],{"class":126},"       # своп (опционально)\n",[21,1756,1757],{},"Затем выполните:",[35,1759,1761],{"className":114,"code":1760,"language":116,"meta":43,"style":43},"docker compose up -d\n",[30,1762,1763],{"__ignoreMap":43},[120,1764,1765,1767,1770,1772],{"class":122,"line":123},[120,1766,134],{"class":133},[120,1768,1769],{"class":137}," compose",[120,1771,894],{"class":137},[120,1773,897],{"class":141},[21,1775,1776],{},"Compose применит лимиты при запуске контейнера.",[16,1778,1780],{"id":1779},"шаг-5-регулировка-резервирования-и-свопа","Шаг 5: Регулировка резервирования и свопа",[265,1782,1783,1793],{},[55,1784,1785,1788,1789,1792],{},[30,1786,1787],{},"--memory-reservation"," (или ",[30,1790,1791],{},"mem_reservation",") — порог, при котором Docker начинает убивать процессы, если память превысила этот уровень.",[55,1794,1795,1788,1797,1800],{},[30,1796,163],{},[30,1798,1799],{},"mem_swap",") — включает своп; установите его равным лимиту, чтобы запретить использование свопа.",[21,1802,1803],{},"Пример запуска с резервированием и без свопа:",[35,1805,1807],{"className":114,"code":1806,"language":116,"meta":43,"style":43},"docker run --name reserved-mem \\\n  --memory=1g \\\n  --memory-reservation=256m \\\n  --memory-swap=0 \\\n  -d \\\n  alpine:3.18 \\\n  sleep 3600\n",[30,1808,1809,1822,1829,1836,1843,1849,1855],{"__ignoreMap":43},[120,1810,1811,1813,1815,1817,1820],{"class":122,"line":123},[120,1812,134],{"class":133},[120,1814,138],{"class":137},[120,1816,1537],{"class":141},[120,1818,1819],{"class":137}," reserved-mem",[120,1821,1543],{"class":141},[120,1823,1824,1827],{"class":122,"line":130},[120,1825,1826],{"class":141},"  --memory=1g",[120,1828,1543],{"class":141},[120,1830,1831,1834],{"class":122,"line":212},[120,1832,1833],{"class":141},"  --memory-reservation=256m",[120,1835,1543],{"class":141},[120,1837,1838,1841],{"class":122,"line":224},[120,1839,1840],{"class":141},"  --memory-swap=0",[120,1842,1543],{"class":141},[120,1844,1845,1847],{"class":122,"line":232},[120,1846,1555],{"class":141},[120,1848,1543],{"class":141},[120,1850,1851,1853],{"class":122,"line":240},[120,1852,1562],{"class":137},[120,1854,1543],{"class":141},[120,1856,1857,1859],{"class":122,"line":248},[120,1858,1569],{"class":137},[120,1860,1572],{"class":141},[153,1862,1863],{},[21,1864,972,1865,1867,1868,1870],{},[25,1866,975],{}," Используйте ",[30,1869,163],{}," для предотвращения использования свопа, что улучшает предсказуемость производительности.",[16,1872,1874],{"id":1873},"шаг-6-устранение-распространённых-проблем","Шаг 6: Устранение распространённых проблем",[21,1876,1877],{},[25,1878,1879],{},"Проблема 1: Контейнер часто перезапускается из-за OOMKilled",[265,1881,1882,1888,1896],{},[55,1883,1884,1885],{},"Проверьте логи: ",[30,1886,1887],{},"docker logs test-mem",[55,1889,1890,1891,64,1893,1895],{},"Увеличьте ",[30,1892,63],{},[30,1894,163],{},", чтобы освободить место.",[55,1897,1898],{},"Оптимизируйте приложение или ограничьте количество одновременно работающих процессов.",[21,1900,1901],{},[25,1902,1903,1904,1906],{},"Проблема 2: ",[30,1905,447],{}," не показывает лимит",[265,1908,1909,1915],{},[55,1910,1911,1912,462],{},"Убедитесь, что контейнер запущен (",[30,1913,1914],{},"docker ps",[55,1916,1917],{},"Удалите и пересоздайте контейнер с лимитом, если предыдущий был запущен без него.",[21,1919,1920],{},[25,1921,1922],{},"Проблема 3: Хост испытывает нехватку памяти",[265,1924,1925,1931],{},[55,1926,1927,1928,72],{},"Проверьте общее использование памяти хоста: ",[30,1929,1930],{},"free -h",[55,1932,1933],{},"Настройте лимиты для других контейнеров или ограничьте количество simultaneously работающих контейнеров.",[16,1935,1937],{"id":1936},"проверка-результата","Проверка результата",[52,1939,1940,1945,1951,1957],{},[55,1941,1942,1943,72],{},"Убедитесь, что контейнер работает: ",[30,1944,1914],{},[55,1946,1947,1948,72],{},"Проверьте текущий лимит: ",[30,1949,1950],{},"docker stats \u003Ccontainer_name>",[55,1952,1953,1954,72],{},"При необходимости проверьте логи на OOMKilled: ",[30,1955,1956],{},"docker logs \u003Ccontainer_name>",[55,1958,1959,1960,72],{},"Для Compose проверьте логи сервиса: ",[30,1961,1962],{},"docker compose logs web",[21,1964,1965],{},"Если лимит отображается и контейнер стабилен, настройка успешно завершена.",[16,1967,1969],{"id":1968},"возможные-проблемы","Возможные проблемы",[265,1971,1972,1981,1996],{},[55,1973,1974,1977,1978,1980],{},[25,1975,1976],{},"Превышение лимита"," может вызвать ",[30,1979,765],{}," — увеличьте лимит или оптимизируйте приложение.",[55,1982,1983,1986,1987,1989,1990,1992,1993,1995],{},[25,1984,1985],{},"Неправильная синтаксисная ошибка"," при добавлении ",[30,1988,793],{}," в Compose — убедитесь, что используете правильный ключ (",[30,1991,793],{}," для старых версий, ",[30,1994,184],{}," для newer).",[55,1997,1998,2001,2002,2004],{},[25,1999,2000],{},"Недостаток прав"," для установки Docker — убедитесь, что вы добавили пользователя в группу ",[30,2003,134],{}," и перезагрузили сессию.",[21,2006,2007],{},"Следуйте этим шагам, и вы сможете надёжно контролировать потребление памяти Docker в Linux-среде.",[485,2009,2010],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":43,"searchDepth":130,"depth":130,"links":2012},[2013,2014,2015,2016,2017,2018,2019,2020,2021,2022],{"id":1249,"depth":130,"text":1250},{"id":1256,"depth":130,"text":1257},{"id":1283,"depth":130,"text":1284},{"id":1516,"depth":130,"text":1517},{"id":1601,"depth":130,"text":1602},{"id":1674,"depth":130,"text":1675},{"id":1779,"depth":130,"text":1780},{"id":1873,"depth":130,"text":1874},{"id":1936,"depth":130,"text":1937},{"id":1968,"depth":130,"text":1969},"2026-07-09 12:20:29","Узнайте, как легко ограничить использование памяти контейнеров Docker на Linux. Пошаговая инструкция с командами для установки лимитов, проверки и устранения проблем за 5 минут.",[2026,2029,2032,2035],{"question":2027,"answer":2028},"Как установить лимит памяти для контейнера Docker?","Используйте флаг `--memory` при запуске контейнера, например `docker run --memory=512m alpine sleep 3600`. Для Compose добавьте `mem_limit` в сервис.",{"question":2030,"answer":2031},"Как проверить текущее использование памяти контейнером?","Запустите `docker stats \u003Ccontainer_name>` — столбец MEM показывает текущее потребление и лимит, если он установлен.",{"question":2033,"answer":2034},"Что делать, если контейнер исчерпывает лимит памяти?","Увеличьте лимит, оптимизируйте приложение, включите своп или используйте `--memory-reservation` для предотвращения OOMKilled.",{"question":2036,"answer":2037},"Как настроить лимиты памяти для docker-compose?","Добавьте `mem_limit` или `deploy.resources.limits.memory` в секцию сервиса, затем выполните `docker-compose up -d`.",[2039,2042,2045,2048,2051,2054],{"name":2040,"text":2041},"Установка Docker (если не установлен)","На Ubuntu 22.04 выполните обновление пакетов и установите Docker из официального репозитория.",{"name":2043,"text":2044},"Запуск контейнера с жёстким лимитом памяти","Запустите контейнер с использованием `--memory`, чтобы ограничить объём используемой оперативной памяти.",{"name":2046,"text":2047},"Проверка лимитов с помощью docker stats","Используйте `docker stats`, чтобы увидеть текущее потребление и убедиться, что лимит работает.",{"name":2049,"text":2050},"Настройка лимитов через docker-compose.yml","Добавьте конфигурацию `mem_limit` или `deploy.resources.limits.memory` в файл docker-compose.yml.",{"name":2052,"text":2053},"Регулировка резервирования и свопа","Настройте `--memory-reservation` (безопасный порог) и `--memory-swap`, чтобы контролировать поведение при нехватке памяти.",{"name":2055,"text":2056},"Устранение распространённых проблем","Если контейнер часто перезапускается, проверьте логи на OOMKilled и скорректируйте лимиты.",[2058,2059,2060,2061,2062,2063,2064],"лимит памяти Docker","установить лимит памяти контейнера","docker run memory limit","docker-compose set memory","ошибка превышения памяти Docker","проверка использования памяти Docker","Docker memory limit Ubuntu",{},[2067,2068],"/guides/linux/docker-cpu-limits","/guides/linux/docker-volume-mount","Гайды Docker",{"title":1240,"description":2024},"guides/linux/docker-memory-limits","В этой статье вы узнаете, как настроить лимиты памяти Docker на Linux, чтобы контролировать потребление ресурсов, предотвратить перегрузку и оптимизировать производительность контейнеров. После выполнения инструкции вы сможете устанавливать и проверять лимиты как через CLI, так и с помощью docker-compose.",[568,570,569,572,2074],"limits","guide","D02hzI0qRmuxVPi2W8h5QKOP-9C0cJPs_VHL42wGrDc",{"data":2078,"body":2079},{},{"type":580,"children":2080},[2081,2086,2096,2115],{"type":583,"tag":21,"props":2082,"children":2083},{},[2084],{"type":40,"value":2085},"Запустите контейнер с большим объёмом памяти:",{"type":583,"tag":35,"props":2087,"children":2091},{"className":2088,"code":2089,"language":116,"meta":43,"style":2090},"language-bash","# Пример для контейнера на основе ubuntu\ndocker run -d --memory=2g --memory-swap=2.5g your_image\n","undefined",[2092],{"type":583,"tag":30,"props":2093,"children":2094},{"__ignoreMap":43},[2095],{"type":40,"value":2089},{"type":583,"tag":21,"props":2097,"children":2098},{},[2099,2101,2106,2108,2113],{"type":40,"value":2100},"Здесь ",{"type":583,"tag":30,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":40,"value":63},{"type":40,"value":2107}," задает жёсткий лимит, ",{"type":583,"tag":30,"props":2109,"children":2111},{"className":2110},[],[2112],{"type":40,"value":163},{"type":40,"value":2114}," позволяет использовать своп-память.",{"type":583,"tag":485,"props":2116,"children":2117},{},[2118],{"type":40,"value":43},{"data":2120,"body":2121},{},{"type":580,"children":2122},[2123,2128,2136,2147,2156],{"type":583,"tag":21,"props":2124,"children":2125},{},[2126],{"type":40,"value":2127},"Добавьте своп к контейнеру:",{"type":583,"tag":35,"props":2129,"children":2131},{"className":2088,"code":2130,"language":116,"meta":43,"style":2090},"docker run -d --memory=2g --memory-swap=3g your_image\n",[2132],{"type":583,"tag":30,"props":2133,"children":2134},{"__ignoreMap":43},[2135],{"type":40,"value":2130},{"type":583,"tag":21,"props":2137,"children":2138},{},[2139,2141,2146],{"type":40,"value":2140},"Или отредактируйте ",{"type":583,"tag":30,"props":2142,"children":2144},{"className":2143},[],[2145],{"type":40,"value":71},{"type":40,"value":185},{"type":583,"tag":35,"props":2148,"children":2151},{"className":2149,"code":2150,"language":190,"meta":43,"style":2090},"language-yaml","services:\n  app:\n    image: your_image\n    deploy:\n      resources:\n        limits:\n          memory: 2G\n",[2152],{"type":583,"tag":30,"props":2153,"children":2154},{"__ignoreMap":43},[2155],{"type":40,"value":2150},{"type":583,"tag":485,"props":2157,"children":2158},{},[2159],{"type":40,"value":43},{"data":2161,"body":2162},{},{"type":580,"children":2163},[2164,2182,2189,2194],{"type":583,"tag":21,"props":2165,"children":2166},{},[2167,2169,2175,2176,2181],{"type":40,"value":2168},"Включите OOM-адвоката в контейнере, добавив ",{"type":583,"tag":30,"props":2170,"children":2172},{"className":2171},[],[2173],{"type":40,"value":2174},"oom_score_adj=-500",{"type":40,"value":68},{"type":583,"tag":30,"props":2177,"children":2179},{"className":2178},[],[2180],{"type":40,"value":108},{"type":40,"value":185},{"type":583,"tag":35,"props":2183,"children":2184},{"className":2088,"code":309,"language":116,"meta":43,"style":2090},[2185],{"type":583,"tag":30,"props":2186,"children":2187},{"__ignoreMap":43},[2188],{"type":40,"value":309},{"type":583,"tag":21,"props":2190,"children":2191},{},[2192],{"type":40,"value":2193},"Это снижает приоритет контейнера при нехватке памяти хоста.",{"type":583,"tag":485,"props":2195,"children":2196},{},[2197],{"type":40,"value":43}]