[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/docker-oom-restart":3,"mdc--yjrd5j-key":576,"mdc--59isp2-key":586,"mdc-m3d43k-key":619,"mdc-x0pytw-key":652,"mdc-12v5dk-key":668,"mdc-k262t2-key":698,"mdc-s8n2d5-key":730,"mdc-xe45c-key":747,"mdc--8vs0a7-key":755,"mdc--ebcnbw-key":779,"related-/errors/linux/docker-memory-limit,/errors/linux/docker-container-crash,/guides/linux/docker-run":794},{"id":4,"title":5,"appliesTo":6,"author":10,"body":11,"canonical":509,"code":31,"createdAt":510,"description":511,"difficulty":512,"draft":513,"estimatedTime":514,"extension":515,"faq":516,"howToSteps":529,"howToTotalTime":548,"image":509,"keywords":549,"locale":557,"meta":558,"navigation":559,"path":560,"platform":561,"related":562,"section":566,"seo":567,"severity":568,"stem":569,"summary":570,"tags":571,"twitterCreator":509,"twitterSite":509,"type":574,"updatedAt":510,"__hash__":575},"content_ru/errors/linux/docker-oom-restart.md","Docker OOM restart: как исправить ошибку нехватки памяти за 5 минут",[7,8,9],"Docker Engine 20.10–24.04","Ubuntu 22.04 LTS","CentOS 8 Stream","FixPedia Team",{"type":12,"value":13,"toc":498},"minimark",[14,19,41,51,58,62,101,105,110,251,255,258,282,296,300,340,344,353,444,447,451,491,494],[15,16,18],"h2",{"id":17},"что-означает-ошибка-docker-oom-перезапуск","Что означает ошибка Docker OOM перезапуск",[20,21,22,23,27,28,32,33,36,37,40],"p",{},"Контейнер Docker может быть ",[24,25,26],"strong",{},"перезапущен"," (код завершения работы ",[29,30,31],"code",{},"137","), когда операционная система сигнализирует ядру Docker о ",[24,34,35],{},"нехватке памяти"," (Out‑Of‑Memory, OOM). Docker отмечает такой процесс как ",[29,38,39],{},"OOMKilled",". Типичные логи содержат сообщение:",[42,43,48],"pre",{"className":44,"code":46,"language":47},[45],"language-text","ОШИБКА: Контейнер ... был остановлен из-за нехватки памяти\n","text",[29,49,46],{"__ignoreMap":50},"",[20,52,53,54,57],{},"Эта ситуация возникает, когда реальное использование памяти контейнера превышает установленный им лимит (",[29,55,56],{},"--memory","), и хост не может выделить дополнительную память без риска краха всей системы.",[15,59,61],{"id":60},"причины-возникновения","Причины возникновения",[63,64,65,83,89,95],"ul",{},[66,67,68,71,72,74,75,78,79,82],"li",{},[24,69,70],{},"Недостаточный лимит памяти"," в команде запуска (",[29,73,56],{},", ",[29,76,77],{},"mem_limit"," в ",[29,80,81],{},"docker‑compose.yml",").",[66,84,85,88],{},[24,86,87],{},"Высокое потребление памяти"," самим приложением или собранными зависимостями.",[66,90,91,94],{},[24,92,93],{},"Отсутствие свопа"," на хосте, из-за чего ядро убивает процесс при исчерпании физической памяти.",[66,96,97,100],{},[24,98,99],{},"Конкуренция ресурсов"," на хосте: другие контейнеры или системы также используют основную память.",[15,102,104],{"id":103},"способы-решения","Способы решения",[106,107,109],"h3",{"id":108},"способ-1-увеличить-лимит-памяти","Способ 1: Увеличить лимит памяти",[111,112,113,177,210],"ol",{},[66,114,115,120,121],{},[24,116,117,118],{},"Редактируйте ",[29,119,81],{}," (или команду запуска) и добавьте лимит:",[42,122,126],{"className":123,"code":124,"language":125,"meta":50,"style":50},"language-yaml shiki shiki-themes github-light github-dark","services:\n  app:\n    image: myapp\n    mem_limit: 2g   # или memory: \"2g\"\n","yaml",[29,127,128,141,149,162],{"__ignoreMap":50},[129,130,133,137],"span",{"class":131,"line":132},"line",1,[129,134,136],{"class":135},"s9eBZ","services",[129,138,140],{"class":139},"sVt8B",":\n",[129,142,144,147],{"class":131,"line":143},2,[129,145,146],{"class":135},"  app",[129,148,140],{"class":139},[129,150,152,155,158],{"class":131,"line":151},3,[129,153,154],{"class":135},"    image",[129,156,157],{"class":139},": ",[129,159,161],{"class":160},"sZZnC","myapp\n",[129,163,165,168,170,173],{"class":131,"line":164},4,[129,166,167],{"class":135},"    mem_limit",[129,169,157],{"class":139},[129,171,172],{"class":160},"2g",[129,174,176],{"class":175},"sJ8bj","   # или memory: \"2g\"\n",[66,178,179,182,183],{},[24,180,181],{},"Перестройте и запустите"," сервис:",[42,184,188],{"className":185,"code":186,"language":187,"meta":50,"style":50},"language-bash shiki shiki-themes github-light github-dark","docker-compose down\ndocker-compose up -d\n","bash",[29,189,190,199],{"__ignoreMap":50},[129,191,192,196],{"class":131,"line":132},[129,193,195],{"class":194},"sScJk","docker-compose",[129,197,198],{"class":160}," down\n",[129,200,201,203,206],{"class":131,"line":143},[129,202,195],{"class":194},[129,204,205],{"class":160}," up",[129,207,209],{"class":208},"sj4cs"," -d\n",[66,211,212,215,216],{},[24,213,214],{},"Проверьте"," новый лимит:",[42,217,219],{"className":185,"code":218,"language":187,"meta":50,"style":50},"docker inspect \u003Ccontainer> | grep MemoryLimit\n",[29,220,221],{"__ignoreMap":50},[129,222,223,226,229,233,236,239,242,245,248],{"class":131,"line":132},[129,224,225],{"class":194},"docker",[129,227,228],{"class":160}," inspect",[129,230,232],{"class":231},"szBVR"," \u003C",[129,234,235],{"class":160},"containe",[129,237,238],{"class":139},"r",[129,240,241],{"class":231},">",[129,243,244],{"class":231}," |",[129,246,247],{"class":194}," grep",[129,249,250],{"class":160}," MemoryLimit\n",[106,252,254],{"id":253},"способ-2-обновить-лимит-для-работающего-контейнера","Способ 2: Обновить лимит для работающего контейнера",[20,256,257],{},"Если контейнер уже запущен, вы можете изменить лимит памяти без пересоздания:",[42,259,261],{"className":185,"code":260,"language":187,"meta":50,"style":50},"docker update --memory=2g \u003Ccontainer>\n",[29,262,263],{"__ignoreMap":50},[129,264,265,267,270,273,275,277,279],{"class":131,"line":132},[129,266,225],{"class":194},[129,268,269],{"class":160}," update",[129,271,272],{"class":208}," --memory=2g",[129,274,232],{"class":231},[129,276,235],{"class":160},[129,278,238],{"class":139},[129,280,281],{"class":231},">\n",[283,284,285],"blockquote",{},[20,286,287,288,291,292,295],{},"💡 ",[24,289,290],{},"Совет:"," После изменения лимита выполните ",[29,293,294],{},"docker restart \u003Ccontainer>"," для немедленного применения (если контейнер не перезапускается автоматически).",[106,297,299],{"id":298},"способ-3-оптимизировать-приложение","Способ 3: Оптимизировать приложение",[111,301,302,308,314],{},[66,303,304,307],{},[24,305,306],{},"Оптимизируйте код"," – используйте эффективные алгоритмы, закэшируйте часто используемые данные.",[66,309,310,313],{},[24,311,312],{},"Настройте пулы соединений"," и ограничите размер кэшей баз данных.",[66,315,316,319,320],{},[24,317,318],{},"Перезапустите контейнер"," после изменений:",[42,321,323],{"className":185,"code":322,"language":187,"meta":50,"style":50},"docker restart \u003Ccontainer>\n",[29,324,325],{"__ignoreMap":50},[129,326,327,329,332,334,336,338],{"class":131,"line":132},[129,328,225],{"class":194},[129,330,331],{"class":160}," restart",[129,333,232],{"class":231},[129,335,235],{"class":160},[129,337,238],{"class":139},[129,339,281],{"class":231},[106,341,343],{"id":342},"способ-4-добавить-своп-память-временный-вариант","Способ 4: Добавить своп-память (временный вариант)",[283,345,346],{},[20,347,348,349,352],{},"⚠️ ",[24,350,351],{},"Важно:"," Использование свопа снижает производительность, используйте только в крайнем случае.",[111,354,355,419],{},[66,356,357,360,361],{},[24,358,359],{},"Добавьте своп-раздел"," или файл на хосте:",[42,362,364],{"className":185,"code":363,"language":187,"meta":50,"style":50},"fallocate -l 2G /swapfile\nchmod 600 /swapfile\nmkswap /swapfile\nswapon /swapfile\necho '/swapfile none swap sw 0 0' >> /etc/fstab\n",[29,365,366,380,390,397,404],{"__ignoreMap":50},[129,367,368,371,374,377],{"class":131,"line":132},[129,369,370],{"class":194},"fallocate",[129,372,373],{"class":208}," -l",[129,375,376],{"class":160}," 2G",[129,378,379],{"class":160}," /swapfile\n",[129,381,382,385,388],{"class":131,"line":143},[129,383,384],{"class":194},"chmod",[129,386,387],{"class":208}," 600",[129,389,379],{"class":160},[129,391,392,395],{"class":131,"line":151},[129,393,394],{"class":194},"mkswap",[129,396,379],{"class":160},[129,398,399,402],{"class":131,"line":164},[129,400,401],{"class":194},"swapon",[129,403,379],{"class":160},[129,405,407,410,413,416],{"class":131,"line":406},5,[129,408,409],{"class":208},"echo",[129,411,412],{"class":160}," '/swapfile none swap sw 0 0'",[129,414,415],{"class":231}," >>",[129,417,418],{"class":160}," /etc/fstab\n",[66,420,421,427,428],{},[24,422,423,424],{},"Настройте ",[29,425,426],{},"vm.swappiness"," для контроля использования свопа:",[42,429,431],{"className":185,"code":430,"language":187,"meta":50,"style":50},"sysctl vm.swappiness=10\n",[29,432,433],{"__ignoreMap":50},[129,434,435,438,441],{"class":131,"line":132},[129,436,437],{"class":194},"sysctl",[129,439,440],{"class":160}," vm.swappiness=",[129,442,443],{"class":208},"10\n",[445,446],"in-article-ad",{},[15,448,450],{"id":449},"профилактика","Профилактика",[63,452,453,463,469,475,485],{},[66,454,455,458,459,462],{},[24,456,457],{},"Мониторьте потребление"," с помощью ",[29,460,461],{},"docker stats"," и визуализируйте графики в Grafana или Prometheus.",[66,464,465,468],{},[24,466,467],{},"Установите алерты"," при превышении 80 % от лимита памяти.",[66,470,471,474],{},[24,472,473],{},"Используйте образы с минимальным размером"," и удаляйте ненужные зависимости.",[66,476,477,480,481,484],{},[24,478,479],{},"Настройте резервную память"," (",[29,482,483],{},"--memory-swap",") для предотвращения внезапных перезапусков.",[66,486,487,490],{},[24,488,489],{},"Регулярно обновляйте Docker"," и драйверы хоста для исправлений, связанных с обработкой памяти.",[20,492,493],{},"Соблюдая эти рекомендации, вы снизите вероятность возникновения OOM-ситуаций и стабилизируете работу контейнеров Docker.",[495,496,497],"style",{},"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":50,"searchDepth":143,"depth":143,"links":499},[500,501,502,508],{"id":17,"depth":143,"text":18},{"id":60,"depth":143,"text":61},{"id":103,"depth":143,"text":104,"children":503},[504,505,506,507],{"id":108,"depth":151,"text":109},{"id":253,"depth":151,"text":254},{"id":298,"depth":151,"text":299},{"id":342,"depth":151,"text":343},{"id":449,"depth":143,"text":450},null,"2026-08-08 10:48:15","Узнайте, как устранить перезапуск контейнеров Docker из-за нехватки памяти (OOM). Пошаговая инструкция по увеличению лимитов памяти и оптимизации за 5 минут.","medium",false,"5-10 мин","md",[517,520,523,526],{"question":518,"answer":519},"Почему контейнер Docker перезапускается из-за OOM?","Docker останавливает контейнер, когда он превышает установленный лимит памяти, и перезапускает его, если включено автономное восстановление. Это приводит к коду завершения работы 137.",{"question":521,"answer":522},"Как проверить, что перезапуск вызван нехваткой памяти?","Запустите `docker inspect \u003Ccontainer>` и проверьте `State.ExitCode` (обычно 137) и логи `docker logs \u003Ccontainer>` на сообщение OOMKilled.",{"question":524,"answer":525},"Как увеличить лимит памяти для контейнера?","Используйте `--memory=...` при запуске или отредактируйте `docker-compose.yml`, либо установите лимит через `docker update --memory=... \u003Ccontainer>`.",{"question":527,"answer":528},"Как предотвратить будущие OOM-ситуации?","Оптимизируйте приложение, используйте резервную память, настройте своп-память, мониторьте потребление через `docker stats` и настройте ресурсы на хосте.",[530,533,536,539,542,545],{"name":531,"text":532},"Проверить текущий лимит памяти","Запустите `docker stats \u003Ccontainer>` или `docker inspect \u003Ccontainer>` для просмотра текущего лимита (`MemoryLimit`).",{"name":534,"text":535},"Увеличить лимит памяти","Отредактируйте `docker-compose.yml`, добавив `mem_limit: 2g`, или запустите контейнер с `--memory=2g`. Перезапустите сервис.",{"name":537,"text":538},"Обновить лимит для работающего контейнера","Выполните `docker update --memory=2g \u003Ccontainer>` для немедленного применения нового лимита.",{"name":540,"text":541},"Оптимизировать приложение","Уменьшите использование памяти в коде, используйте пулы соединений, закэшируйте данные, и перезапустите контейнер.",{"name":543,"text":544},"Добавить своп-память (временный вариант)","На хосте отредактируйте `/etc/fstab`, добавьте своп-раздел, запустите `swapon -a`.",{"name":546,"text":547},"Проверить логи после изменений","Запустите `docker logs \u003Ccontainer>` и убедитесь, что OOM-сообщения больше не появляются.","PT10M",[550,551,552,553,554,555,556],"Docker OOM restart","контейнер Docker нехватка памяти","перезапуск Docker из-за OOM","код ошибки 137 Docker","лимиты памяти Docker","docker run OOM","oom-restart Docker","ru_RU",{},true,"/errors/linux/docker-oom-restart","linux",[563,564,565],"/errors/linux/docker-memory-limit","/errors/linux/docker-container-crash","/guides/linux/docker-run","Ошибки Docker",{"title":5,"description":511},"high","errors/linux/docker-oom-restart","Статья объясняет, почему Docker контейнеры перезапускаются при исчерпании памяти (OOM), и показывает несколько проверенных способов решить проблему. Вы узнаете, как настроить лимиты памяти, оптимизировать контейнеры и предотвратить будущие перезапуски.",[225,561,572,573],"oom","memory","error","q9MBcgEdgjsReHNWlQfWcjE_09kFYrGs8pxR6loMEKY",{"data":577,"body":578},{},{"type":579,"children":580},"root",[581],{"type":582,"tag":20,"props":583,"children":584},"element",{},[585],{"type":47,"value":519},{"data":587,"body":588},{},{"type":579,"children":589},[590],{"type":582,"tag":20,"props":591,"children":592},{},[593,595,601,603,609,611,617],{"type":47,"value":594},"Запустите ",{"type":582,"tag":29,"props":596,"children":598},{"className":597},[],[599],{"type":47,"value":600},"docker inspect \u003Ccontainer>",{"type":47,"value":602}," и проверьте ",{"type":582,"tag":29,"props":604,"children":606},{"className":605},[],[607],{"type":47,"value":608},"State.ExitCode",{"type":47,"value":610}," (обычно 137) и логи ",{"type":582,"tag":29,"props":612,"children":614},{"className":613},[],[615],{"type":47,"value":616},"docker logs \u003Ccontainer>",{"type":47,"value":618}," на сообщение OOMKilled.",{"data":620,"body":621},{},{"type":579,"children":622},[623],{"type":582,"tag":20,"props":624,"children":625},{},[626,628,634,636,642,644,650],{"type":47,"value":627},"Используйте ",{"type":582,"tag":29,"props":629,"children":631},{"className":630},[],[632],{"type":47,"value":633},"--memory=...",{"type":47,"value":635}," при запуске или отредактируйте ",{"type":582,"tag":29,"props":637,"children":639},{"className":638},[],[640],{"type":47,"value":641},"docker-compose.yml",{"type":47,"value":643},", либо установите лимит через ",{"type":582,"tag":29,"props":645,"children":647},{"className":646},[],[648],{"type":47,"value":649},"docker update --memory=... \u003Ccontainer>",{"type":47,"value":651},".",{"data":653,"body":654},{},{"type":579,"children":655},[656],{"type":582,"tag":20,"props":657,"children":658},{},[659,661,666],{"type":47,"value":660},"Оптимизируйте приложение, используйте резервную память, настройте своп-память, мониторьте потребление через ",{"type":582,"tag":29,"props":662,"children":664},{"className":663},[],[665],{"type":47,"value":461},{"type":47,"value":667}," и настройте ресурсы на хосте.",{"data":669,"body":670},{},{"type":579,"children":671},[672],{"type":582,"tag":20,"props":673,"children":674},{},[675,676,682,684,689,691,697],{"type":47,"value":594},{"type":582,"tag":29,"props":677,"children":679},{"className":678},[],[680],{"type":47,"value":681},"docker stats \u003Ccontainer>",{"type":47,"value":683}," или ",{"type":582,"tag":29,"props":685,"children":687},{"className":686},[],[688],{"type":47,"value":600},{"type":47,"value":690}," для просмотра текущего лимита (",{"type":582,"tag":29,"props":692,"children":694},{"className":693},[],[695],{"type":47,"value":696},"MemoryLimit",{"type":47,"value":82},{"data":699,"body":700},{},{"type":579,"children":701},[702],{"type":582,"tag":20,"props":703,"children":704},{},[705,707,712,714,720,722,728],{"type":47,"value":706},"Отредактируйте ",{"type":582,"tag":29,"props":708,"children":710},{"className":709},[],[711],{"type":47,"value":641},{"type":47,"value":713},", добавив ",{"type":582,"tag":29,"props":715,"children":717},{"className":716},[],[718],{"type":47,"value":719},"mem_limit: 2g",{"type":47,"value":721},", или запустите контейнер с ",{"type":582,"tag":29,"props":723,"children":725},{"className":724},[],[726],{"type":47,"value":727},"--memory=2g",{"type":47,"value":729},". Перезапустите сервис.",{"data":731,"body":732},{},{"type":579,"children":733},[734],{"type":582,"tag":20,"props":735,"children":736},{},[737,739,745],{"type":47,"value":738},"Выполните ",{"type":582,"tag":29,"props":740,"children":742},{"className":741},[],[743],{"type":47,"value":744},"docker update --memory=2g \u003Ccontainer>",{"type":47,"value":746}," для немедленного применения нового лимита.",{"data":748,"body":749},{},{"type":579,"children":750},[751],{"type":582,"tag":20,"props":752,"children":753},{},[754],{"type":47,"value":541},{"data":756,"body":757},{},{"type":579,"children":758},[759],{"type":582,"tag":20,"props":760,"children":761},{},[762,764,770,772,778],{"type":47,"value":763},"На хосте отредактируйте ",{"type":582,"tag":29,"props":765,"children":767},{"className":766},[],[768],{"type":47,"value":769},"/etc/fstab",{"type":47,"value":771},", добавьте своп-раздел, запустите ",{"type":582,"tag":29,"props":773,"children":775},{"className":774},[],[776],{"type":47,"value":777},"swapon -a",{"type":47,"value":651},{"data":780,"body":781},{},{"type":579,"children":782},[783],{"type":582,"tag":20,"props":784,"children":785},{},[786,787,792],{"type":47,"value":594},{"type":582,"tag":29,"props":788,"children":790},{"className":789},[],[791],{"type":47,"value":616},{"type":47,"value":793}," и убедитесь, что OOM-сообщения больше не появляются.",[]]