Скиллы Продвинутый Разработка и DevOps

Docker

Скачать ZIP
13
Предупреждение о рисках!

Установка скиллов и плагинов OpenClaw осуществляется на ваш страх и риск. Все файлы были получены из открытых источников и предоставляются «как есть». Мы не гарантируем их корректную работу, безопасность или совместимость с вашей системой. Перед установкой настоятельно рекомендуется ознакомиться с содержимым кода и убедиться, что вы понимаете, какие изменения будут внесены в вашу систему.

Контейнеры Docker, образы, Compose-стеки, сети, тома, отладка и продакшн-харденинг — всё, что нужно для стабильной работы реальных окружений. Этот материал — концентрат практических ловушек и правил, которые экономят часы (а иногда и дни) при работе с Docker.

Конфигурация логов

Драйвер логирования json-file по умолчанию не имеет ограничения по размеру. Один «разговорчивый» контейнер способен заполнить диск и уронить хост. Ограничивайте размер логов заранее.

Ловушки при работе с образами

  • Многостадийные сборки: забытый --from=builder может тихо скопировать не тот слой.
  • COPY перед RUN ломает кеш при каждом изменении файлов — сначала копируйте зависимости, затем код.
  • ADD автоматически распаковывает архивы — используйте COPY, если это не требуется.
  • Build-аргументы сохраняются в истории образа — не используйте их для секретов.

Ловушки во время выполнения

  • localhost внутри контейнера — это сам контейнер, а не хост.
  • Порт уже занят — возможно, предыдущий контейнер ещё завершает работу.
  • Код выхода 137 — контейнер убит по OOM, 139 — segfault.
  • В distroless-образах нет shell — используйте docker cp или sidecar для отладки.

Сетевые ловушки

  • DNS контейнеров работает только в пользовательских сетях.
  • Проброшенные порты по умолчанию доступны на 0.0.0.0 — ограничивайте до 127.0.0.1, если нужно.
  • «Зомби»-соединения после падения контейнера — используйте healthcheck и restart-политику.

Ловушки Docker Compose

  • depends_on ждёт запуска контейнера, но не готовности сервиса.
  • Файл .env игнорируется, если лежит не рядом с docker-compose.yml.
  • Монтирование томов перезаписывает данные контейнера.
  • YAML-анкоры не работают между файлами.

Тома и хранение

  • Анонимные тома накапливаются незаметно — используйте именованные.
  • Проблемы прав доступа при bind mount — пользователь контейнера должен совпадать с хостом.
  • docker system prune не удаляет тома без флага --volumes.
  • Данные остановленных контейнеров сохраняются до удаления контейнера.

Утечки ресурсов

  • Неиспользуемые образы растут бесконечно — очищайте через docker image prune.
  • Кеш сборки занимает всё больше места — используйте docker builder prune.
  • Остановленные контейнеры продолжают занимать диск.
  • Сети от Compose-проектов накапливаются со временем.

Безопасность и секреты

  • ENV и COPY навсегда сохраняют секреты в слоях образа.
  • --privileged отключает всю изоляцию — почти никогда не нужен.
  • Образы из неизвестных источников могут быть вредоносными.
  • Секреты в переменных окружения видны через docker inspect.

Отладка

  • Проверяйте логи даже у упавших контейнеров: docker logs.
  • Коды выхода помогают быстро понять причину падения.
  • Файлы из «мёртвого» контейнера можно извлечь через docker cp.

Docker — это мощный инструмент, но большинство проблем возникает не из-за сложности, а из-за скрытых допущений. Понимание этих ловушек позволяет строить стабильные и предсказуемые системы.


Файл из источника

10926_docker-1.0.4.zip