Files
obsidian-vault/personal/tech/docker-mac-disk-issues.md
T
Taiga b53dd70a15 [2026-09-26 09:10:28] syncthing: personal/tech/archive-org-collection-harvest.md personal/tech/balda-go-fx-pitfalls.md personal/tech/bilety-oxota-interaktiv.md personal/tech/cloudflare-tunnel-ssh-published-route.md personal/tech/deepseek-language-drift.md personal/tech/docker-data-root-mount-race.md personal/tech/docker-mac-disk-issues.md personal/tech/docker_colima_setup.md personal/tech/eagle-dashboard-launchd.md personal/tech/hermes-agent-improvements.md personal/tech/hermes-browser-toolsets.md personal/tech/hermes-fork-vs-upstream.md personal/tech/hermes-git-repo.md personal/tech/hermes-memory-architecture.md personal/tech/hermes-secret-redaction-bypass.md personal/tech/hermes-self-improvement-review.md personal/tech/home-network-config.md personal/tech/inter-site-throughput-taiga-to-mac.md personal/tech/inter-site-throughput-taiga-to-mac.md.bak-nedstab2 personal/tech/jellyfin-db-schema-mismatch.md personal/tech/karabiner-keyboard-config.md personal/tech/kraken-media-inventory-facts.md personal/tech/kraken-truenas-media-copies.md personal/tech/lampa-jellyfin-plugin.md personal/tech/lampac-deployment.md personal/tech/lampac-torrserver.md personal/tech/llm-model-selection-2026.md personal/tech/mac-print-shared-services.md personal/tech/modbus-rtu-sniffer-debugging.md personal/tech/multistream-single-flow-limit.md personal/tech/multistream-single-flow-limit.md.bak-nedstab2 personal/tech/music-tags-repair-truenas.md personal/tech/obsidian-mcp-ecosystem.md personal/tech/original-xbox-2025-guide.md personal/tech/prowlarr-flaresolverr-cloudflare.md personal/tech/radarr-sonarr-phantom-records.md personal/tech/roundtrip-key-verification.md personal/tech/ryujinx-mac-setup.md personal/tech/skill-arr-media-stack-setup-additions.md personal/tech/skill-docker-data-root-mount-race.md personal/tech/skill-lampac-kraken-deploy.md personal/tech/tirith-trust.md personal/tech/truenas-local-tree-comparison.md personal/tech/truenas-nfs4-acl-and-arrmultiuser.md personal/tech/truenas-zfs-panic-recovery.md personal/tech/vault-doc-pruning.md personal/tech/vless-space-subscription-egress.md personal/tech/watchlist-sync-feed.md personal/tech/watchtower-docker-updates.md personal/tech/xray-outbound-subscription-3xui.md personal/tech/xray-reverse-limits-private-network.md personal/tech/xray-reverse-tunnel-kraken-truenas.md personal/tech/xray-reverse-tunnel-kraken-truenas.md.bak-nedstab2 personal/tech/yandex-music-api.md
2026-09-26 09:10:28 +00:00

5.8 KiB
Executable File
Raw Blame History

Docker на Mac — проблема с диском и сборкой образов

Последнее обновление: 2026-06-30

Сетап

Параметр Значение
Движок Colima (не Docker Desktop!)
Гипервизор macOS Virtualization.Framework
Архитектура arm64
CPU 8 ядер
RAM 24 GiB
Диск VM 100 GiB (sparse)
Mount type virtiofs

Проблема: контейнеры (особенно Zulip) зависают во время сборки Docker образов для Валеры

Симптом: Zulip перестаёт отвечать на вебхуки, RabbitMQ паникует, PostgreSQL тормозит.

🔴 Реальный корень — переполнение диска VM (не CPU, не bind mount)

Структура диска Colima VM

/dev/vdb1 (98 GiB, data disk) хранит /var/lib/docker:

17 GB — /var/lib/docker (Colima data)
├── 8.2 GB — rootfs/overlayfs        ← слои всех образов
├── 8.9 GB — volumes
│   ├── 8.4 GB — buildx_buildkit_arm64builder0_state   ← 🔴 build cache volume
│   ├── 341 MB — zulip_zulip-pgdata
│   ├── 85 MB — dangling volume
│   ├── 46 MB — openclaw_postgres-data
│   └── 38 MB — zulip_zulip-data
└── остальное — containers, buildkit metadata

Build cache volume — 8.4 GB и не чистится сам

Docker BuildKit при использовании buildx хранит кеш слоёв в Docker volume, а не в overlayfs. Это volume buildx_buildkit_arm64builder0_state.

Почему не чистится:

  • docker system prune чистит только build cache records (метаданные), НЕ volume
  • BuildKit контейнер (moby/buildkit:buildx-stable-1) всегда running — volume считается активным
  • BuildKit GC policy не видит этот volume как «своё» хранилище (это Docker volume, не /var/lib/buildkit)
  • Без ручной очистки volume растёт с каждой сборкой и не уменьшается

Почему аффектит контейнеры:

  1. Каждая сборка Валеры добавляет новые слои в этот volume
  2. Volume растёт (8.4 GB и выше)
  3. Когда /dev/vdb1 заполняется >85-90%:
    • Docker overlayfs + containerd snapshotter начинают тормозить
    • Запись новых слоёв фейлится или идёт в разы медленнее
    • PostgreSQL и RabbitMQ WAL не могут закоммититься
    • RabbitMQ Khepri (Raft) при проблемах с WAL сбрасывает состояние (пользователи пропадают)
    • Zulip отдаёт 500 на /api/v1/register
    • Контейнеры тупят или падают в restart loop

Чистка build cache (безопасно — не трогает образы, контейнеры, volumes)

docker builder prune --all --force — удаляет только временный build cache (промежуточные слои сборок). Не затрагивает:

  • Образы (SDK, libs, рантаймы) — docker images не меняется
  • Контейнеры (запущенные и остановленные)
  • Volumes (включая БД)
  • Networks
# Полная очистка build cache
docker builder prune --all --force

При следующей сборке: если образ уже собран и его слои есть в overlayfs, BuildKit пересоберёт только то, что изменилось в Dockerfile. Базовые apt-get install / pip install придётся перевыполнить, если их слой был закэширован.

Щадящая чистка (оставляет свежий кэш <24h):

docker builder prune --filter 'until=24h' --force

Не полностью решает проблему — volume фрагментирован, место не reclaim-ится.

Чистка build cache volume (агрессивно — перекачка с нуля)

# Остановить buildkit контейнер, удалить volume, BuildKit пересоздаст при следующем билде
docker rm -f buildx_buildkit_arm64builder0
docker volume rm buildx_buildkit_arm64builder0_state

Мониторинг заполненности диска VM:

colima ssh -- df -h /dev/vdb1

Связанные документы

Apple Container — потенциальная замена Colima

Apple Container (apple/container, Apache 2.0, v1.0.0, Jun 9 2026) — нативная Swift-утилита для Linux контейнеров на macOS 26. VM-per-container через Virtualization.framework (не shared-kernel). OCI-совместима, pull/push с любых registry.

Не заменяет Colima сейчас — нет compose, нет buildx. При появлении compose-аналога может решить проблему build cache принципиально (архитектура VM-per-container не имеет одного volume, где всё гниёт).

Пока — следить за релизами. personal/documents/deferred-tasks