OpenCode в Docker: что контейнер достаёт по сети
Введение
Эта статья — часть большого руководства
OpenCode в Docker на Ubuntu 24.04.
Руководство показывает, как запускать
OpenCode с флагом
--auto внутри контейнера
Docker.
С --auto агент не спрашивает вас перед каждой
командой, поэтому контейнер ограничивает то, до чего он может достать:
агент работает только в одном git worktree, отдельной
копии проекта.
Контейнер видит только те файлы, которые в него смонтированы. С сетью
иначе.
Эта статья показывает, до чего контейнер всё же достаёт по сети и как
закрыть локальный сайт.
До чего достаёт контейнер
Контейнер выходит наружу через хост и достаёт сам хост по адресу 172.17.0.1, шлюзу сети Docker по умолчанию. Проверено через wget из контейнера:
| Цель | Хост слушает на | Из контейнера |
|---|---|---|
| локальный сайт, 172.17.0.1:8080 | 0.0.0.0 | доступен |
| отчёты тестов, 172.17.0.1:5050 | 0.0.0.0 | доступен |
| дашборд, 172.17.0.1:8765 | 127.0.0.1 | отказ |
| 127.0.0.1:8080 | — | отказ: это собственный loopback контейнера |
| интернет | — | доступен, он нужен модели |
Закрыть локальный сайт
Локальный сайт отдаёт основную копию, включая игнорируемые файлы, так что
то, что worktree из шага 2
(worktree для агента) не пустил внутрь, доступно одним запросом.
Опубликуйте его порт на 127.0.0.1: браузер на
хосте продолжит работать, а контейнер получит
Connection refused:
vi container/docker-compose.yml
php-apache: ports: - "127.0.0.1:8080:80"
Каждый другой порт
Каждый другой порт получает тот же префикс. Каждая строка этой команды с 0.0.0.0 или [::] — сервис, до которого контейнер может достать:
ss -ltn
Интернет остаётся открытым. Чтобы ограничить его хостом модели, нужен прокси перед контейнером.
Автор статьи: Клавдия Кондакова