[2026-09-26] eagle: family/documents/vault-sync/2026-09-26-syncthing-clone-root-objects-acl-confusion.md family/how-to/vault-git-sync.md personal/plans/balda-mm-phase4-agents.md personal/tech/docker_colima_setup.md personal/tech/macos-docker-virtiofs-mount-limits.md personal/tech/truenas-nfs4-acl-and-arrmultiuser.md
This commit is contained in:
1 parent
8efe5c8970
commit
f482778257
6 files changed
+330
-25
No files matched your search
@@ -1,15 +1,16 @@
|
||||
# macOS Docker Desktop — что НЕ проезжает в контейнер (virtiofs)
|
||||
|
||||
> Создан 2026-09-26. Статус: **проверено живыми тестами** (alpine:3.20, linux/arm64,
|
||||
> Docker Desktop на macOS 26.6.1, Apple Silicon).
|
||||
> **Colima** на macOS 26.6.1, Apple Silicon; `colima start --cpu 8 --memory 24 --disk 100`).
|
||||
> Тема: границы проброса путей из мира macOS в контейнер.
|
||||
> Все выводы получены прогонами, не по памяти. Команды воспроизведения — в §5.
|
||||
> Все выводы получены прогонами, не по памяти. Команды воспроизведения — в §6.
|
||||
|
||||
---
|
||||
|
||||
## 0. Главный вывод одной строкой
|
||||
|
||||
На macOS Docker Desktop отдаёт контейнеру файлы **не через Linux `mount`**, а через
|
||||
На macOS рантайм контейнеров (Colima, Docker Desktop) отдаёт контейнеру файлы
|
||||
**не через Linux `mount`**, а через
|
||||
**virtiofs** — демон, который строит маппинг путей **в момент старта контейнера**
|
||||
и знает только пути **мира macOS**, известные ему на старте.
|
||||
|
||||
@@ -160,6 +161,55 @@ ln /tmp/a /tmp/b # → Operation not permitt
|
||||
|
||||
---
|
||||
|
||||
## 8. ⚠️ Реализация на macOS: `docker-compose`, а не `docker compose`
|
||||
|
||||
Проверено 2026-09-26 на этой машине (Docker CLI 29.4.1, macOS 26.6.1, Apple Silicon).
|
||||
Compose здесь — **отдельный бинарь**, не подкоманда `docker`:
|
||||
|
||||
| Что | Значение |
|
||||
|---|---|
|
||||
| CLI | `/opt/homebrew/bin/docker` (v29.4.1) |
|
||||
| buildx | плагин, симлинк в `~/.docker/cli-plugins/docker-buildx` |
|
||||
| compose | `/opt/homebrew/bin/docker-compose` (**v5.1.3**), симлинк в `/opt/homebrew/lib/docker/cli-plugins/` |
|
||||
|
||||
```bash
|
||||
docker compose config # → docker: unknown command: docker compose
|
||||
docker compose config --quiet # → unknown flag: --quiet
|
||||
docker-compose config # ✅ работает
|
||||
docker-compose config --services
|
||||
```
|
||||
|
||||
📌 **Всегда `docker-compose` (с дефисом) в этом окружении.** Сообщение об ошибке
|
||||
выглядит как «docker не знает такой команды», а не «compose не установлен» — легко
|
||||
принять за сломанный Docker.
|
||||
|
||||
⚠️ Дефолтный билдер (`default` → `/var/run/docker.sock`) в статусе **`error`**.
|
||||
Для arm64-сборок использовать именованный билдер:
|
||||
```bash
|
||||
docker buildx build --builder arm64builder --platform linux/arm64 \
|
||||
--provenance=false --load -t <tag> .
|
||||
```
|
||||
|
||||
### Порядок файлов при генерации override
|
||||
|
||||
`compose.override.yaml` подхватывается compose **автоматически**, но если он ссылается на
|
||||
несуществующий путь на хосте, `up` падает на монтировании. Поэтому порядок строго такой:
|
||||
|
||||
```
|
||||
1. .env ← env_file, иначе up падает сразу
|
||||
2. agents-mounts.yaml ← манифест (можно пустой: mounts: [])
|
||||
3. tools/render-mounts.py ← → compose.override.yaml
|
||||
4. docker-compose up -d
|
||||
```
|
||||
|
||||
### Ловушка: `deploy.resources.limits` в не-swarm compose
|
||||
|
||||
Секция `deploy.resources.limits.memory` **молча игнорируется** запуском через
|
||||
`docker-compose up` (это формат swarm). Лимит создаёт ложное ощущение защиты —
|
||||
что-то ограничивать нужно иначе (cgroups напрямую или `mem_limit`, зависят от версии).
|
||||
|
||||
---
|
||||
|
||||
## Связанные заметки
|
||||
- [[personal/plans/balda-mm-phase4-agents]] — применение этих выводов (Фаза 4)
|
||||
- [[personal/projects/balda/balda-mm-delegation-plan]] — общий план проекта
|
||||
|
||||
Reference in new issue
Block a user