TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #4506 1.22K
✏️Редактируем файлы в запущенных контейнерах

Docker Debug — это не только инструмент для диагностики контейнеров. Он позволяет редактировать файлы в реальном времени, не останавливая контейнер и не пересобирая образ.

Представим типичную ситуацию: у вас запущен nginx, и нужно срочно изменить содержимое страницы или подправить конфигурацию. Обычно это означает остановку контейнера, правку файлов, пересборку образа. С Docker Debug всё проще.

Запускаем nginx контейнер:
docker run -d --name my-nginx -p 8080:80 nginx:latest


Контейнер запущен, nginx отдаёт стандартную welcome-страницу на http://localhost:8080.

Подключаемся с Docker Debug:
docker debug my-nginx


Вы попадаете в интерактивную оболочку с полным набором инструментов для отладки. Docker Debug автоматически монтирует файловую систему контейнера и предоставляет доступ к утилитам вроде vim, nano, curl.

Редактируем index.html:
# Находим файл (обычно это /usr/share/nginx/html/index.html)
vi /usr/share/nginx/html/index.html


Меняем содержимое на что-то своё:
<!DOCTYPE html>
<html>
<head>
<title>Edited via Docker Debug</title>
</head>
<body>
<h1>Это работает! Файл отредактирован без пересборки образа.</h1>
<p>Изменения применились мгновенно.</p>
</body>
</html>


Сохраняем и выходим из debug-сессии. Обновляем страницу в браузере на http://localhost:8080 — изменения применились моментально, nginx уже отдаёт новый контент.

То же самое работает и для конфигурационных файлов. Например, нужно быстро изменить настройки nginx:
docker debug my-nginx

# Редактируем конфигурацию
vi /etc/nginx/nginx.conf

# Применяем изменения без перезапуска контейнера
nginx -s reload


Важные нюансы

Изменения эфемерны — они существуют только в запущенном контейнере. При пересоздании контейнера всё вернётся к состоянию образа.

Не для всех образов — минималистичные образы, например, scratch или distroless могут не иметь необходимых утилит даже с Docker Debug.

Если изменения нужно сохранить, создайте новый образ из контейнера:
docker commit my-nginx my-nginx:edited


Или лучше — перенесите изменения в Dockerfile и пересоберите образ правильно:
FROM nginx:latest
COPY custom-index.html /usr/share/nginx/html/index.html
COPY custom-nginx.conf /etc/nginx/nginx.conf


Используйте для экспериментов, но не забывайте документировать изменения в коде.

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека devops'a

#арсенал_инженера
  • ❤ 3
  • 👍 3
More from @devopsslib
  1. Sep 25, 2026🤖 ИИ-агенту теперь можно поставить задачу прямо в GitLab — и не расписывать каждый следую…
  2. Sep 25, 2026✨ Как настроить PostgreSQL для продакшен-нагрузок При переходе к продакшен-нагрузкам важно…
  3. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026👩‍💻 Bash-скрипт для мониторинга сервисов Полноценный мониторинг вроде Zabbix или Prometh…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →