[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/docker-bind-mounts":3,"mdc--7iexgj-key":337,"mdc--qppgj8-key":348,"mdc-ckp1h6-key":371,"mdc--u1wx3b-key":388,"mdc--l2kchy-key":414,"mdc--pj5tuu-key":428,"related-/guides/linux/docker-volumes,/guides/linux/docker-compose,/guides/linux/docker-network":454,"mdc-3r1l8y-key":1187,"mdc--86oqfq-key":1227},{"id":4,"title":5,"appliesTo":6,"author":10,"body":11,"canonical":273,"code":273,"createdAt":274,"description":275,"difficulty":276,"draft":277,"estimatedTime":278,"extension":279,"faq":280,"howToSteps":293,"howToTotalTime":306,"image":273,"keywords":307,"locale":316,"meta":317,"navigation":318,"path":319,"platform":320,"related":321,"section":325,"seo":326,"severity":273,"stem":327,"summary":328,"tags":329,"twitterCreator":273,"twitterSite":273,"type":335,"updatedAt":274,"__hash__":336},"content_ru/guides/linux/docker-bind-mounts.md","Создание bind-монта в Docker для персистентного хранения данных",[7,8,9],"Docker 20.10+","Ubuntu 22.04","Debian 11","FixPedia Team",{"type":12,"value":13,"toc":261},"minimark",[14,19,28,32,53,56,60,65,80,84,91,95,98,161,171,175,189,193,207,211,247,250,257],[15,16,18],"h2",{"id":17},"введение","Введение",[20,21,22,23,27],"p",{},"Bind-монта — это способ напрямую смонтировать директорию операционной системы хоста в контейнер Docker. Это полезно для хранения данных, которые нужно сохранить после остановки или удаления контейнера, например баз данных, логов или конфигурационных файлов. После выполнения этого гайда вы сможете быстро настроить bind-монта как с помощью ",[24,25,26],"code",{},"docker run",", так и с помощью Docker Compose.",[15,29,31],{"id":30},"требования","Требования",[33,34,35,39,42],"ul",{},[36,37,38],"li",{},"ОС Linux с установленным Docker (≥ 20.10).",[36,40,41],{},"Права на запись в директорию, которую вы хотите смонтировать (рекомендуется использовать пользователя с правами root или настроить владение).",[36,43,44,45,48,49,52],{},"Базовый контейнер-образ (например, ",[24,46,47],{},"alpine",", ",[24,50,51],{},"ubuntu",").",[54,55],"in-article-ad",{},[15,57,59],{"id":58},"пошаговая-инструкция","Пошаговая инструкция",[61,62,64],"h3",{"id":63},"шаг-1-установка-docker-на-систему","Шаг 1: Установка Docker на систему",[20,66,67,68,71,72,75,76,79],{},"Убедитесь, что Docker уже установлен (",[24,69,70],{},"docker --version","). На Ubuntu/Debian используйте ",[24,73,74],{},"apt install docker.io",", затем перезапустите службу: ",[24,77,78],{},"sudo systemctl restart docker",".",[61,81,83],{"id":82},"шаг-2-создание-директории-на-хосте","Шаг 2: Создание директории на хосте",[20,85,86,87,90],{},"Создайте каталог, который будете монтировать, например, ",[24,88,89],{},"mkdir -p ~/docker_data",". Вы можете расположить его где угодно, но путь должен быть доступен для чтения/записи.",[61,92,94],{"id":93},"шаг-3-запуск-контейнера-с-bind-монтом","Шаг 3: Запуск контейнера с bind-монтом",[20,96,97],{},"Запустите контейнер, сопоставив директорию хоста с путём внутри контейнера:",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-bash shiki shiki-themes github-light github-dark","docker run -d \\\n  --name test-container \\\n  -v ~/docker_data:/data \\\n  alpine/sh ECHO \"Mount point available\"\n","bash","",[24,106,107,127,138,149],{"__ignoreMap":104},[108,109,112,116,120,124],"span",{"class":110,"line":111},"line",1,[108,113,115],{"class":114},"sScJk","docker",[108,117,119],{"class":118},"sZZnC"," run",[108,121,123],{"class":122},"sj4cs"," -d",[108,125,126],{"class":122}," \\\n",[108,128,130,133,136],{"class":110,"line":129},2,[108,131,132],{"class":122},"  --name",[108,134,135],{"class":118}," test-container",[108,137,126],{"class":122},[108,139,141,144,147],{"class":110,"line":140},3,[108,142,143],{"class":122},"  -v",[108,145,146],{"class":118}," ~/docker_data:/data",[108,148,126],{"class":122},[108,150,152,155,158],{"class":110,"line":151},4,[108,153,154],{"class":118},"  alpine/sh",[108,156,157],{"class":118}," ECHO",[108,159,160],{"class":118}," \"Mount point available\"\n",[20,162,163,166,167,170],{},[24,164,165],{},"-v ~/docker_data:/data"," создает bind-монтирование. Флаг ",[24,168,169],{},"-d"," запускает контейнер Detached.",[61,172,174],{"id":173},"шаг-4-проверка-монтирования","Шаг 4: Проверка монтирования",[20,176,177,178,181,182,185,186,79],{},"Проверьте список монтируемых точек: ",[24,179,180],{},"docker inspect test-container | grep -A 10 'Mounts'",". Также войдите в контейнер (",[24,183,184],{},"docker exec -it test-container sh",") и проверьте ",[24,187,188],{},"ls /data",[15,190,192],{"id":191},"проверка-результата","Проверка результата",[20,194,195,196,198,199,202,203,206],{},"Если ",[24,197,188],{}," показывает содержимое директории хоста, bind-монта работает корректно. Для дополнительной уверенности запишите файл в ",[24,200,201],{},"/data"," на хосте (",[24,204,205],{},"echo test > ~/docker_data/file.txt",") и проверьте его внутри контейнера — изменения сразу будут видны.",[15,208,210],{"id":209},"возможные-проблемы","Возможные проблемы",[33,212,213,227,237],{},[36,214,215,219,220,223,224,52],{},[216,217,218],"strong",{},"Ошибка доступа",": может появиться, если владелец директории на хосте не совпадает с пользователем в контейнере. Решение: измените владельца (",[24,221,222],{},"sudo chown -R $USER:$USER ~/docker_data",") или настроить права (",[24,225,226],{},"chmod 755",[36,228,229,232,233,236],{},[216,230,231],{},"Путь не существует",": Docker не может смонтировать несуществующую директорию. Убедитесь, что ",[24,234,235],{},"~/docker_data"," существует перед запуском контейнера.",[36,238,239,242,243,246],{},[216,240,241],{},"Повторное монтирование",": нельзя монтировать одну и ту же хост-директорию в несколько контейнеров одновременно без флага ",[24,244,245],{},"--rm",". Используйте разные контейнеры с разными путями или удаляйте старые контейнеры перед повторным монтированием.",[248,249],"hr",{},[20,251,252,253,256],{},"Если bind-монта — это не то, что вам нужно, рассмотрите использование типов Volumes (",[24,254,255],{},"-v"," с именем) или tmpfs для временных данных. Связанные гайды помогут вам освоить альтернативные методы управления хранилищем в Docker.",[258,259,260],"style",{},"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);}",{"title":104,"searchDepth":129,"depth":129,"links":262},[263,264,265,271,272],{"id":17,"depth":129,"text":18},{"id":30,"depth":129,"text":31},{"id":58,"depth":129,"text":59,"children":266},[267,268,269,270],{"id":63,"depth":140,"text":64},{"id":82,"depth":140,"text":83},{"id":93,"depth":140,"text":94},{"id":173,"depth":140,"text":174},{"id":191,"depth":129,"text":192},{"id":209,"depth":129,"text":210},null,"2026-07-17 09:56:35","Пошаговая инструкция по созданию bind-монта в Docker — узнайте, как подключить директорию хоста к контейнеру за 5 минут, избежать потери данных и использовать персистентное хранилище.","medium",false,"5-10 мин","md",[281,284,287,290],{"question":282,"answer":283},"Зачем использовать bind-монта вместо типов Volumes в Docker?","Bind-монта напрямую использует директорию на хосте, что подходит для конфигурационных файлов, баз данных или любых данных, которые нужно хранить вне lifecycle контейнера.",{"question":285,"answer":286},"Как избежать ошибок прав доступа при создании bind-монта?","Убедитесь, что владелец директории на хосте совпадает с пользователем/группой в контейнере (или используйте `sudo`), и установите правильные флаги (например, `chmod 755`).",{"question":288,"answer":289},"Как определить bind-монта в Docker Compose?","Добавьте секцию `volumes:` с маппингом `\u003Chost-path>:/container/path` внутри сервиса, например:\n\n```yaml\nservices:\n  app:\n    image: myapp\n    volumes:\n      - ./config:/etc/myapp\n```",{"question":291,"answer":292},"Что делать, если bind-монта не отображается внутри контейнера?","Проверьте `docker ps -v`, чтобы увидеть монтируемые точки, перезапустите контейнер и убедитесь, что путь на хосте действительно существует.",[294,297,300,303],{"name":295,"text":296},"Установка Docker на систему","Убедитесь, что Docker уже установлен (`docker --version`). На Ubuntu/Debian используйте `apt install docker.io`, затем перезапустите службу: `sudo systemctl restart docker`.",{"name":298,"text":299},"Создание директории на хосте","Создайте каталог, который будете монтировать, например, `mkdir -p ~/docker_data`. Вы можете расположить его где угодно, но путь должен быть доступен для чтения/записи.",{"name":301,"text":302},"Запуск контейнера с bind-монтом","Запустите контейнер, сопоставив директорию хоста с путём внутри контейнера:\n\n```bash\ndocker run -d \\\n  --name test-container \\\n  -v ~/docker_data:/data \\\n  alpine/sh ECHO \"Mount point available\"\n```\n\n`-v ~/docker_data:/data` создает bind-монтирование.",{"name":304,"text":305},"Проверка монтирования","Проверьте список монтируемых точек: `docker inspect test-container | grep -A 10 'Mounts'`. Также войдите в контейнер (`docker exec -it test-container sh`) и проверьте `ls /data`.","PT8M",[308,309,310,311,312,313,314,315],"docker bind mount","подключить директорию в контейнер","персистентное хранилище docker","docker volume bind","docker run -v","docker compose bind mount","сохранить данные в docker контейнере","монтирование host директории в docker","ru_RU",{},true,"/guides/linux/docker-bind-mounts","linux",[322,323,324],"/guides/linux/docker-volumes","/guides/linux/docker-compose","/guides/linux/docker-network","Гайды Docker",{"title":5,"description":275},"guides/linux/docker-bind-mounts","В этом гайде вы узнаете, что такое bind-монта в Docker, зачем она нужна и как быстро её настроить с помощью Docker CLI и Docker Compose. После выполнения инструкции ваши данные в контейнере будут сохраняться даже после его остановки.",[330,331,332,333,334],"Docker","Bind Mount","Linux","Storage","Containers","guide","NwmMNr78bxMjX6QPSLUf1QsspJhCUE1bDXmBEZl_QYA",{"data":338,"body":339},{},{"type":340,"children":341},"root",[342],{"type":343,"tag":20,"props":344,"children":345},"element",{},[346],{"type":347,"value":283},"text",{"data":349,"body":350},{},{"type":340,"children":351},[352],{"type":343,"tag":20,"props":353,"children":354},{},[355,357,363,365,370],{"type":347,"value":356},"Убедитесь, что владелец директории на хосте совпадает с пользователем/группой в контейнере (или используйте ",{"type":343,"tag":24,"props":358,"children":360},{"className":359},[],[361],{"type":347,"value":362},"sudo",{"type":347,"value":364},"), и установите правильные флаги (например, ",{"type":343,"tag":24,"props":366,"children":368},{"className":367},[],[369],{"type":347,"value":226},{"type":347,"value":52},{"data":372,"body":373},{},{"type":340,"children":374},[375],{"type":343,"tag":20,"props":376,"children":377},{},[378,380,386],{"type":347,"value":379},"Проверьте ",{"type":343,"tag":24,"props":381,"children":383},{"className":382},[],[384],{"type":347,"value":385},"docker ps -v",{"type":347,"value":387},", чтобы увидеть монтируемые точки, перезапустите контейнер и убедитесь, что путь на хосте действительно существует.",{"data":389,"body":390},{},{"type":340,"children":391},[392],{"type":343,"tag":20,"props":393,"children":394},{},[395,396,401,402,407,408,413],{"type":347,"value":67},{"type":343,"tag":24,"props":397,"children":399},{"className":398},[],[400],{"type":347,"value":70},{"type":347,"value":71},{"type":343,"tag":24,"props":403,"children":405},{"className":404},[],[406],{"type":347,"value":74},{"type":347,"value":75},{"type":343,"tag":24,"props":409,"children":411},{"className":410},[],[412],{"type":347,"value":78},{"type":347,"value":79},{"data":415,"body":416},{},{"type":340,"children":417},[418],{"type":343,"tag":20,"props":419,"children":420},{},[421,422,427],{"type":347,"value":86},{"type":343,"tag":24,"props":423,"children":425},{"className":424},[],[426],{"type":347,"value":89},{"type":347,"value":90},{"data":429,"body":430},{},{"type":340,"children":431},[432],{"type":343,"tag":20,"props":433,"children":434},{},[435,436,441,442,447,448,453],{"type":347,"value":177},{"type":343,"tag":24,"props":437,"children":439},{"className":438},[],[440],{"type":347,"value":180},{"type":347,"value":181},{"type":343,"tag":24,"props":443,"children":445},{"className":444},[],[446],{"type":347,"value":184},{"type":347,"value":185},{"type":343,"tag":24,"props":449,"children":451},{"className":450},[],[452],{"type":347,"value":188},{"type":347,"value":79},[455],{"id":456,"title":457,"appliesTo":458,"author":10,"body":463,"canonical":273,"code":273,"createdAt":1133,"description":1134,"difficulty":276,"draft":277,"estimatedTime":1135,"extension":279,"faq":1136,"howToSteps":1149,"howToTotalTime":1162,"image":273,"keywords":1163,"locale":316,"meta":1173,"navigation":318,"path":322,"platform":320,"related":1174,"section":325,"seo":1177,"severity":273,"stem":1178,"summary":1179,"tags":1180,"twitterCreator":273,"twitterSite":273,"type":335,"updatedAt":1133,"__hash__":1186},"content_ru/guides/linux/docker-volumes.md","Docker volumes в Linux: полное руководство по управлению томами",[459,460,461,462],"Docker 19.03+","Ubuntu 20.04+","CentOS 8+","Debian 11+",{"type":12,"value":464,"toc":1114},[465,469,472,476,479,507,511,515,526,570,573,577,580,623,630,667,671,674,772,779,783,788,804,807,811,872,874,878,885,948,950,971,973,977,980,1037,1041,1055,1059,1072,1076,1089,1093,1111],[15,466,468],{"id":467},"введение-зачем-это-нужно","Введение / Зачем это нужно",[20,470,471],{},"Docker volumes — это предпочтительный способ сохранения данных, генерируемых или используемых контейнерами Docker. В отличие от связывания (bind mounts) или tmpfs, тома полностью управляются Docker, что обеспечивает переносимость, простоту бэкапов и миграции. В этом гайде вы научитесь создавать, монтировать и управлять томами в Linux, чтобы ваши данные (базы данных, логи, конфиги) оставались безопасными после остановки или удаления контейнера.",[15,473,475],{"id":474},"требования-подготовка","Требования / Подготовка",[20,477,478],{},"Перед началом убедитесь, что:",[480,481,482,487,492,495],"ol",{},[36,483,484,485,79],{},"Установлен Docker Engine (версия 19.03 или новее). Проверьте: ",[24,486,70],{},[36,488,489,490,52],{},"Учётная запись имеет права на управление Docker (обычно группа ",[24,491,115],{},[36,493,494],{},"Доступ к терминалу Linux (Ubuntu, CentOS, Debian или другая дистрибутив).",[36,496,497,498,48,501,48,504,52],{},"Базовое понимание команд Docker (",[24,499,500],{},"run",[24,502,503],{},"ps",[24,505,506],{},"exec",[15,508,510],{"id":509},"создание-и-использование-томов","Создание и использование томов",[61,512,514],{"id":513},"шаг-1-создание-тома","Шаг 1: Создание тома",[20,516,517,518,521,522,525],{},"Создайте именованный том с помощью ",[24,519,520],{},"docker volume create",". Docker сохранит его в ",[24,523,524],{},"/var/lib/docker/volumes/"," (по умолчанию).",[99,527,529],{"className":101,"code":528,"language":103,"meta":104,"style":104},"# Создание тома с именем 'my_data'\ndocker volume create my_data\n\n# Проверка списка томов\ndocker volume ls\n",[24,530,531,537,550,555,560],{"__ignoreMap":104},[108,532,533],{"class":110,"line":111},[108,534,536],{"class":535},"sJ8bj","# Создание тома с именем 'my_data'\n",[108,538,539,541,544,547],{"class":110,"line":129},[108,540,115],{"class":114},[108,542,543],{"class":118}," volume",[108,545,546],{"class":118}," create",[108,548,549],{"class":118}," my_data\n",[108,551,552],{"class":110,"line":140},[108,553,554],{"emptyLinePlaceholder":318},"\n",[108,556,557],{"class":110,"line":151},[108,558,559],{"class":535},"# Проверка списка томов\n",[108,561,563,565,567],{"class":110,"line":562},5,[108,564,115],{"class":114},[108,566,543],{"class":118},[108,568,569],{"class":118}," ls\n",[20,571,572],{},"Том создан, но ещё не связан с контейнером.",[61,574,576],{"id":575},"шаг-2-монтирование-тома-в-контейнер","Шаг 2: Монтирование тома в контейнер",[20,578,579],{},"Запустите контейнер, смонтировав том в указанный путь внутри контейнера. Данные, записанные в этот путь, сохранятся в томе.",[99,581,583],{"className":101,"code":582,"language":103,"meta":104,"style":104},"# Запуск контейнера с томом, смонтированным в /app/data\ndocker run -d \\\n  --name my_container \\\n  -v my_data:/app/data \\\n  nginx:alpine\n",[24,584,585,590,600,609,618],{"__ignoreMap":104},[108,586,587],{"class":110,"line":111},[108,588,589],{"class":535},"# Запуск контейнера с томом, смонтированным в /app/data\n",[108,591,592,594,596,598],{"class":110,"line":129},[108,593,115],{"class":114},[108,595,119],{"class":118},[108,597,123],{"class":122},[108,599,126],{"class":122},[108,601,602,604,607],{"class":110,"line":140},[108,603,132],{"class":122},[108,605,606],{"class":118}," my_container",[108,608,126],{"class":122},[108,610,611,613,616],{"class":110,"line":151},[108,612,143],{"class":122},[108,614,615],{"class":118}," my_data:/app/data",[108,617,126],{"class":122},[108,619,620],{"class":110,"line":562},[108,621,622],{"class":118},"  nginx:alpine\n",[20,624,625,626,629],{},"Или с помощью синтаксиса ",[24,627,628],{},"--mount"," (более явный):",[99,631,633],{"className":101,"code":632,"language":103,"meta":104,"style":104},"docker run -d \\\n  --name my_container \\\n  --mount source=my_data,target=/app/data \\\n  nginx:alpine\n",[24,634,635,645,653,663],{"__ignoreMap":104},[108,636,637,639,641,643],{"class":110,"line":111},[108,638,115],{"class":114},[108,640,119],{"class":118},[108,642,123],{"class":122},[108,644,126],{"class":122},[108,646,647,649,651],{"class":110,"line":129},[108,648,132],{"class":122},[108,650,606],{"class":118},[108,652,126],{"class":122},[108,654,655,658,661],{"class":110,"line":140},[108,656,657],{"class":122},"  --mount",[108,659,660],{"class":118}," source=my_data,target=/app/data",[108,662,126],{"class":122},[108,664,665],{"class":110,"line":151},[108,666,622],{"class":118},[61,668,670],{"id":669},"шаг-3-проверка-работы-тома","Шаг 3: Проверка работы тома",[20,672,673],{},"Добавьте данные в смонтированный путь и убедитесь, что они персистентны.",[99,675,677],{"className":101,"code":676,"language":103,"meta":104,"style":104},"# Зайдите в контейнер\ndocker exec -it my_container sh\n\n# Внутри контейнера создайте файл\necho \"Тестовые данные\" > /app/data/test.txt\nexit\n\n# Запустите второй контейнер с тем же томом\ndocker run --rm \\\n  -v my_data:/app/data \\\n  alpine cat /app/data/test.txt\n",[24,678,679,684,699,703,708,723,729,734,740,752,761],{"__ignoreMap":104},[108,680,681],{"class":110,"line":111},[108,682,683],{"class":535},"# Зайдите в контейнер\n",[108,685,686,688,691,694,696],{"class":110,"line":129},[108,687,115],{"class":114},[108,689,690],{"class":118}," exec",[108,692,693],{"class":122}," -it",[108,695,606],{"class":118},[108,697,698],{"class":118}," sh\n",[108,700,701],{"class":110,"line":140},[108,702,554],{"emptyLinePlaceholder":318},[108,704,705],{"class":110,"line":151},[108,706,707],{"class":535},"# Внутри контейнера создайте файл\n",[108,709,710,713,716,720],{"class":110,"line":562},[108,711,712],{"class":122},"echo",[108,714,715],{"class":118}," \"Тестовые данные\"",[108,717,719],{"class":718},"szBVR"," >",[108,721,722],{"class":118}," /app/data/test.txt\n",[108,724,726],{"class":110,"line":725},6,[108,727,728],{"class":122},"exit\n",[108,730,732],{"class":110,"line":731},7,[108,733,554],{"emptyLinePlaceholder":318},[108,735,737],{"class":110,"line":736},8,[108,738,739],{"class":535},"# Запустите второй контейнер с тем же томом\n",[108,741,743,745,747,750],{"class":110,"line":742},9,[108,744,115],{"class":114},[108,746,119],{"class":118},[108,748,749],{"class":122}," --rm",[108,751,126],{"class":122},[108,753,755,757,759],{"class":110,"line":754},10,[108,756,143],{"class":122},[108,758,615],{"class":118},[108,760,126],{"class":122},[108,762,764,767,770],{"class":110,"line":763},11,[108,765,766],{"class":118},"  alpine",[108,768,769],{"class":118}," cat",[108,771,722],{"class":118},[20,773,774,775,778],{},"Вывод: ",[24,776,777],{},"Тестовые данные"," — том работает.",[61,780,782],{"id":781},"шаг-4-управление-томами","Шаг 4: Управление томами",[784,785,787],"h4",{"id":786},"просмотр-информации-о-томе","Просмотр информации о томе",[99,789,791],{"className":101,"code":790,"language":103,"meta":104,"style":104},"docker volume inspect my_data\n",[24,792,793],{"__ignoreMap":104},[108,794,795,797,799,802],{"class":110,"line":111},[108,796,115],{"class":114},[108,798,543],{"class":118},[108,800,801],{"class":118}," inspect",[108,803,549],{"class":118},[20,805,806],{},"Вывод содержит путь на хосте, точки монтирования, драйвер.",[784,808,810],{"id":809},"удаление-тома","Удаление тома",[99,812,814],{"className":101,"code":813,"language":103,"meta":104,"style":104},"# Удаление конкретного тома (только если ни один контейнер его не использует)\ndocker volume rm my_data\n\n# Принудительное удаление (если том используется, сначала остановите контейнеры)\ndocker volume rm -f my_data\n\n# Очистка всех неиспользуемых томов\ndocker volume prune\n",[24,815,816,821,832,836,841,854,858,863],{"__ignoreMap":104},[108,817,818],{"class":110,"line":111},[108,819,820],{"class":535},"# Удаление конкретного тома (только если ни один контейнер его не использует)\n",[108,822,823,825,827,830],{"class":110,"line":129},[108,824,115],{"class":114},[108,826,543],{"class":118},[108,828,829],{"class":118}," rm",[108,831,549],{"class":118},[108,833,834],{"class":110,"line":140},[108,835,554],{"emptyLinePlaceholder":318},[108,837,838],{"class":110,"line":151},[108,839,840],{"class":535},"# Принудительное удаление (если том используется, сначала остановите контейнеры)\n",[108,842,843,845,847,849,852],{"class":110,"line":562},[108,844,115],{"class":114},[108,846,543],{"class":118},[108,848,829],{"class":118},[108,850,851],{"class":122}," -f",[108,853,549],{"class":118},[108,855,856],{"class":110,"line":725},[108,857,554],{"emptyLinePlaceholder":318},[108,859,860],{"class":110,"line":731},[108,861,862],{"class":535},"# Очистка всех неиспользуемых томов\n",[108,864,865,867,869],{"class":110,"line":736},[108,866,115],{"class":114},[108,868,543],{"class":118},[108,870,871],{"class":118}," prune\n",[54,873],{},[15,875,877],{"id":876},"работа-с-драйверами-и-опциями","Работа с драйверами и опциями",[20,879,880,881,884],{},"По умолчанию используется драйвер ",[24,882,883],{},"local",". Для специализированных сценариев (NFS, CIFS) укажите драйвер и опции при создании:",[99,886,888],{"className":101,"code":887,"language":103,"meta":104,"style":104},"# Создание тома с драйвером NFS (пример)\ndocker volume create \\\n  --driver local \\\n  --opt type=nfs \\\n  --opt o=addr=192.168.1.100,rw \\\n  --opt device=:/путь/на/nfs/сервере \\\n  nfs_volume\n",[24,889,890,895,905,915,925,934,943],{"__ignoreMap":104},[108,891,892],{"class":110,"line":111},[108,893,894],{"class":535},"# Создание тома с драйвером NFS (пример)\n",[108,896,897,899,901,903],{"class":110,"line":129},[108,898,115],{"class":114},[108,900,543],{"class":118},[108,902,546],{"class":118},[108,904,126],{"class":122},[108,906,907,910,913],{"class":110,"line":140},[108,908,909],{"class":122},"  --driver",[108,911,912],{"class":118}," local",[108,914,126],{"class":122},[108,916,917,920,923],{"class":110,"line":151},[108,918,919],{"class":122},"  --opt",[108,921,922],{"class":118}," type=nfs",[108,924,126],{"class":122},[108,926,927,929,932],{"class":110,"line":562},[108,928,919],{"class":122},[108,930,931],{"class":118}," o=addr=192.168.1.100,rw",[108,933,126],{"class":122},[108,935,936,938,941],{"class":110,"line":725},[108,937,919],{"class":122},[108,939,940],{"class":118}," device=:/путь/на/nfs/сервере",[108,942,126],{"class":122},[108,944,945],{"class":110,"line":731},[108,946,947],{"class":118},"  nfs_volume\n",[15,949,192],{"id":191},[480,951,952,958,961,964],{},[36,953,954,955,79],{},"Том создан и отображается в ",[24,956,957],{},"docker volume ls",[36,959,960],{},"Данные, записанные в смонтированный путь, сохраняются после остановки и удаления контейнера.",[36,962,963],{},"Несколько контейнеров могут одновременно использовать один том (если это не приводит к конфликтам).",[36,965,966,967,970],{},"При удалении тома через ",[24,968,969],{},"docker volume rm"," данные безвозвратно удаляются с хоста.",[15,972,210],{"id":209},[61,974,976],{"id":975},"ошибка-volume-is-in-use","Ошибка \"volume is in use\"",[20,978,979],{},"При удалении тома Docker проверяет, используется ли он. Остановите все контейнеры, использующие том:",[99,981,983],{"className":101,"code":982,"language":103,"meta":104,"style":104},"docker ps -a --filter volume=my_data\ndocker stop $(docker ps -aq --filter volume=my_data)\ndocker volume rm my_data\n",[24,984,985,1001,1027],{"__ignoreMap":104},[108,986,987,989,992,995,998],{"class":110,"line":111},[108,988,115],{"class":114},[108,990,991],{"class":118}," ps",[108,993,994],{"class":122}," -a",[108,996,997],{"class":122}," --filter",[108,999,1000],{"class":118}," volume=my_data\n",[108,1002,1003,1005,1008,1012,1014,1016,1019,1021,1024],{"class":110,"line":129},[108,1004,115],{"class":114},[108,1006,1007],{"class":118}," stop",[108,1009,1011],{"class":1010},"sVt8B"," $(",[108,1013,115],{"class":114},[108,1015,991],{"class":118},[108,1017,1018],{"class":122}," -aq",[108,1020,997],{"class":122},[108,1022,1023],{"class":118}," volume=my_data",[108,1025,1026],{"class":1010},")\n",[108,1028,1029,1031,1033,1035],{"class":110,"line":140},[108,1030,115],{"class":114},[108,1032,543],{"class":118},[108,1034,829],{"class":118},[108,1036,549],{"class":118},[61,1038,1040],{"id":1039},"проблемы-с-правами-доступа","Проблемы с правами доступа",[20,1042,1043,1044,1047,1048,1050,1051,1054],{},"Если контейнер не может записать в том, проверьте права на хостовой директории (для bind mounts) или настройте ",[24,1045,1046],{},"userns-remap"," для томов. Для томов ",[24,1049,883],{}," Docker управляет правами, но если том смонтирован в bind-режиме, настройте ",[24,1052,1053],{},"chmod"," на хосте.",[61,1056,1058],{"id":1057},"том-не-виден-в-указанном-пути-на-хосте","Том не виден в указанном пути на хосте",[20,1060,1061,1062,1064,1065,1067,1068,1071],{},"Тома ",[24,1063,883],{}," хранятся в ",[24,1066,524],{},". Путь внутри этой директории управляется Docker и может меняться. Для прямого доступа с хоста используйте ",[24,1069,1070],{},"docker run --mount type=bind"," (но тогда это не том, а bind mount).",[61,1073,1075],{"id":1074},"утечка-данных-при-удалении-контейнера","Утечка данных при удалении контейнера",[20,1077,1061,1078,1081,1082,1084,1085,1088],{},[216,1079,1080],{},"не удаляются автоматически"," при удалении контейнера (в отличие от анонимных томов). Удаляйте тома явно через ",[24,1083,969],{}," или ",[24,1086,1087],{},"prune",", чтобы избежать накопления неиспользуемых данных.",[61,1090,1092],{"id":1091},"производительность","Производительность",[20,1094,1095,1096,1098,1099,1102,1103,1106,1107,1110],{},"Для высоконагруженных БД (PostgreSQL, MySQL) используйте тома с драйвером ",[24,1097,883],{}," и опциями ",[24,1100,1101],{},"noatime,nodiratime"," в ",[24,1104,1105],{},"mount","-опциях, или рассмотрите специализированные драйверы (например, ",[24,1108,1109],{},"local-persist","). Избегайте NFS для интенсивных операций записи без настройки кэширования.",[258,1112,1113],{},"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 .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 .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}",{"title":104,"searchDepth":129,"depth":129,"links":1115},[1116,1117,1118,1124,1125,1126],{"id":467,"depth":129,"text":468},{"id":474,"depth":129,"text":475},{"id":509,"depth":129,"text":510,"children":1119},[1120,1121,1122,1123],{"id":513,"depth":140,"text":514},{"id":575,"depth":140,"text":576},{"id":669,"depth":140,"text":670},{"id":781,"depth":140,"text":782},{"id":876,"depth":129,"text":877},{"id":191,"depth":129,"text":192},{"id":209,"depth":129,"text":210,"children":1127},[1128,1129,1130,1131,1132],{"id":975,"depth":140,"text":976},{"id":1039,"depth":140,"text":1040},{"id":1057,"depth":140,"text":1058},{"id":1074,"depth":140,"text":1075},{"id":1091,"depth":140,"text":1092},"2026-04-08 14:00:07","Изучите Docker volumes в Linux с нуля! Пошаговая инструкция по созданию, использованию и управлению томами для сохранения данных. Решение за 10-15 минут.","10-15 мин",[1137,1140,1143,1146],{"question":1138,"answer":1139},"В чем разница между Docker volumes и bind mounts?","Volumes — управляемые Docker тома, хранящиеся в специальном каталоге (`/var/lib/docker/volumes/`), с поддержкой бэкапов и миграции. Bind mounts напрямую монтируют хост-путь, что менее безопасно и переносимо.",{"question":1141,"answer":1142},"Как удалить неиспользуемые тома?","Используйте `docker volume prune` для удаления всех висячих томов или `docker volume rm \u003Cимя_тома>` для конкретного. Добавьте `-f` для принудительного удаления без подтверждения.",{"question":1144,"answer":1145},"Можно ли использовать один volume для нескольких контейнеров?","Да, том можно смонтировать в несколько контейнеров одновременно. Это удобно для обмена данными, но требует осторожности с блокировками и согласованностью данных.",{"question":1147,"answer":1148},"Как настроить драйвер для volume (например, `local` или `nfs`)?","При создании укажите драйвер: `docker volume create --driver local --opt o=bind --opt type=none --opt device=/путь/на/хосте имя_тома`. Для NFS используйте `--driver nfs` и опции `--opt`.",[1150,1153,1156,1159],{"name":1151,"text":1152},"Создайте новый том Docker","Выполните команду `docker volume create имя_тома`, чтобы создать управляемый Docker том. Том будет доступен для монтирования в контейнеры.",{"name":1154,"text":1155},"Запустите контейнер с томом","Используйте флаг `-v` или `--mount` в `docker run`, чтобы смонтировать том. Пример: `docker run -d -v имя_тома:/путь/в/контейнере образ`.",{"name":1157,"text":1158},"Проверьте данные в томе","Запишите данные в смонтированный путь внутри контейнера, затем проверьте их из другого контейнера или через `docker volume inspect`, чтобы убедиться в персистентности.",{"name":1160,"text":1161},"Управляйте томами","Используйте `docker volume ls` для списка, `docker volume inspect имя_тома` для деталей и `docker volume rm имя_тома` для удаления.","PT15M",[1164,1165,1166,1167,1168,314,1169,1170,1171,1172],"docker volumes linux","тома docker примеры","как использовать docker volume","docker volume create команда","управление томами docker","персистентные тома docker","docker volume rm удаление","docker volumes vs bind mounts","docker volume inspect",{},[319,1175,1176],"/guides/linux/docker-networks","/errors/linux/docker-permission-denied",{"title":457,"description":1134},"guides/linux/docker-volumes","Это руководство поможет вам освоить работу с Docker volumes в Linux. Вы узнаете, как создавать тома, монтировать их в контейнеры и управлять данными между запусками.",[115,1181,1182,320,1183,1184,1185],"тома","контейнеры","devops","docker volumes","управление данными","5TbTVhyOeHGtYVf085ZHsFtU-W3QQ-iK6JYTGKs5sYY",{"data":1188,"body":1189},{},{"type":340,"children":1190},[1191,1212,1223],{"type":343,"tag":20,"props":1192,"children":1193},{},[1194,1196,1202,1204,1210],{"type":347,"value":1195},"Добавьте секцию ",{"type":343,"tag":24,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":347,"value":1201},"volumes:",{"type":347,"value":1203}," с маппингом ",{"type":343,"tag":24,"props":1205,"children":1207},{"className":1206},[],[1208],{"type":347,"value":1209},"\u003Chost-path>:/container/path",{"type":347,"value":1211}," внутри сервиса, например:",{"type":343,"tag":99,"props":1213,"children":1218},{"className":1214,"code":1215,"language":1216,"meta":104,"style":1217},"language-yaml","services:\n  app:\n    image: myapp\n    volumes:\n      - ./config:/etc/myapp\n","yaml","undefined",[1219],{"type":343,"tag":24,"props":1220,"children":1221},{"__ignoreMap":104},[1222],{"type":347,"value":1215},{"type":343,"tag":258,"props":1224,"children":1225},{},[1226],{"type":347,"value":104},{"data":1228,"body":1229},{},{"type":340,"children":1230},[1231,1235,1243,1253],{"type":343,"tag":20,"props":1232,"children":1233},{},[1234],{"type":347,"value":97},{"type":343,"tag":99,"props":1236,"children":1238},{"className":1237,"code":102,"language":103,"meta":104,"style":1217},"language-bash",[1239],{"type":343,"tag":24,"props":1240,"children":1241},{"__ignoreMap":104},[1242],{"type":347,"value":102},{"type":343,"tag":20,"props":1244,"children":1245},{},[1246,1251],{"type":343,"tag":24,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":347,"value":165},{"type":347,"value":1252}," создает bind-монтирование.",{"type":343,"tag":258,"props":1254,"children":1255},{},[1256],{"type":347,"value":104}]