Сеть Cargo
В Nanocl 0.18 сеть настраивается на уровне Cargo. Укажите NetworkMode, PortBindings, Hostname и Dns рядом с Containers, а не внутри отдельного контейнера.
ApiVersion: v0.18
Cargoes:
- Name: api
NetworkMode: private-api
PortBindings:
8080/tcp:
- HostIp: 127.0.0.1
HostPort: "8080"
Dns:
- $$INTERNAL_GATEWAY
Containers:
- Name: api
Image: ghcr.io/example/api:1.0.0NetworkMode принимает непустое имя сети Docker либо поддерживаемые встроенные режимы default, bridge, host и none. Без этого поля используется сеть Nanocl по умолчанию. Пользовательские значения container:... отклоняются, поскольку Nanocl управляет общим сетевым пространством имён реплики с несколькими контейнерами.
Для именованной локальной сети, например private-api:
- Nanocl использует существующую сеть Docker без изменений.
- Если её нет, создаёт локальную bridge-сеть с возможностью подключения.
- Сохраняет полученные параметры сети, чтобы
ncproxyиncdnsразрешали селекторы именованных сетей. - Удаление Cargo не удаляет сеть Docker автоматически.
Сети — локальные ресурсы Docker узла, а не объекты Nanocl пространств имён. Nanocl 0.18 не предоставляет API Statefile для выбора драйвера или подсети.
Привязка портов хоста на уровне Cargo не поддерживается с NetworkMode: host и NetworkMode: none. Фиксированные порты также могут требовать остановки старого поколения перед запуском кандидата обновления и не гарантируют непрерывное переключение.
Внутренний шлюз
Nanocl подставляет $$INTERNAL_GATEWAY в любой части сериализованной конфигурации контейнера. Для именованной сети это её шлюз. Для встроенных режимов Docker используется шлюз nanoclbr0.