OpenCode в Docker: что контейнер достаёт по сети

Введение

Эта статья — часть большого руководства OpenCode в Docker на Ubuntu 24.04.

Руководство показывает, как запускать OpenCode с флагом --auto внутри контейнера Docker.

С --auto агент не спрашивает вас перед каждой командой, поэтому контейнер ограничивает то, до чего он может достать: агент работает только в одном git worktree, отдельной копии проекта.

Контейнер видит только те файлы, которые в него смонтированы. С сетью иначе.

Эта статья показывает, до чего контейнер всё же достаёт по сети и как закрыть локальный сайт.

До чего достаёт контейнер

Контейнер выходит наружу через хост и достаёт сам хост по адресу 172.17.0.1, шлюзу сети Docker по умолчанию. Проверено через wget из контейнера:

ЦельХост слушает наИз контейнера
локальный сайт, 172.17.0.1:80800.0.0.0доступен
отчёты тестов, 172.17.0.1:50500.0.0.0доступен
дашборд, 172.17.0.1:8765127.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

Интернет остаётся открытым. Чтобы ограничить его хостом модели, нужен прокси перед контейнером.

Автор статьи: Клавдия Кондакова