Skip to Content
РуководстваNanoclНачало работы1. Знакомство и настройка

Знакомство и настройка

Добро пожаловать! Рады, что вы хотите изучить Nanocl.

Эта страница поможет начать работу с Nanocl.
В руководстве вы научитесь:

  • Понимать основы образов контейнеров, пространств имён, Cargo и экземпляров Cargo.
  • Запускать образ контейнера как cargo.
  • Изменять cargo.
  • Настраивать правило прокси.
  • Использовать файл конфигурации состояния для быстрого развёртывания.

Руководство предполагает, что у вас установлена актуальная версия Nanocl.
Если её нет, смотрите инструкции установки.

Начало руководства

Создадим и запустим cargo командой:

nanocl cargo run my-cargo nginx:1.23

Скачивание образа и запуск контейнера могут занять несколько минут.

Используются следующие параметры:

  • my-cargo — имя Cargo.
  • nginx:1.23 — имя образа контейнера.

Команда создаст и запустит один экземпляр Cargo my-cargo.

Nanocl выберет IPv4-адрес для экземпляра Cargo. Значения по умолчанию следуют рекомендуемым практикам.

Посмотрите назначенный IP, проверив Cargo:

nanocl cargo inspect global.my-cargo

У меня назначен IPv4 10.2.0.2; проверим его через curl!

curl 10.2.0.2

Теперь экземпляр Cargo Nginx работает по IPv4 10.2.0.2.

Что такое Cargo?

Вы запустили cargo, но что это такое?
Cargo — сохраняемая конфигурация нагрузки. Он содержит один или несколько именованных приложений, необязательные упорядоченные init-контейнеры и фиксированное число реплик. Каждая реплика содержит процессы, объявленные Cargo.

Если вы знакомы с Kubernetes, представляйте Cargo как вариант pod.

Получите список Cargo командой:

nanocl cargo ls

Примерный вывод:

KEY CONTAINERS STATUS INSTANCES VERSION CREATED AT UPDATED AT global.my-cargo my-cargo=nginx:1.23 start/start (unknown) 1/1 v0.1.0 2026-08-28 21:24:27 2026-08-28 21:24:27

В общем случае для управления Cargo используйте:

nanocl cargo

Доступные команды можно увидеть так:

nanocl cargo help

Вывод:

Manage cargoes Usage: nanocl cargo [OPTIONS] <COMMAND> Commands: list List existing cargo create Create a new cargo start Start cargoes by canonical keys stop Stop cargoes by canonical keys restart Restart cargoes by canonical keys remove Remove cargoes by canonical keys inspect Inspect a cargo by its canonical key patch Update a cargo by its canonical key history List cargo history revert Revert cargo to a specific history logs Show logs run Run a cargo stats Show stats of cargo help Print this message or the help of the given subcommand(s) Options: -h, --help Print help

Итак, Cargo:

  • Описывает один или несколько именованных контейнеров приложения.
  • Может объявлять упорядоченные init-контейнеры и сохраняемое число реплик.
  • Создаёт процессы каждой реплики и управляет ими.

Что такое экземпляр Cargo?

Теперь вы знаете Cargo; что такое его экземпляр? Реплика Cargo — одна реализация его спецификации. Она может содержать несколько процессов приложения и, вне сети хоста, общую внутреннюю сетевую песочницу. Изоляция контейнеров использует пространства имён Linux и cgroups Docker.

Итак, экземпляр Cargo:

  • Содержит именованные процессы приложения, объявленные Cargo.
  • Имеет порядковый номер, доступный через NANOCL_CARGO_INSTANCE.
  • Изолирован от других реплик и работает на локальном узле Docker.

Что такое образ контейнера?

Запуск Cargo создаёт экземпляр с изолированной файловой системой. Она называется образом контейнера и должна содержать всё для запуска приложения: зависимости, конфигурацию, скрипты, бинарные файлы и прочее. Образ также содержит настройки контейнера, например переменные окружения, команду по умолчанию и метаданные.

Подробное рассмотрение контейнеров и образов заняло бы много времени; обратитесь к документации Docker .

Если вы знакомы с chroot, контейнер похож на его расширенную версию.
Файловая система берётся из образа.
Но контейнер добавляет изоляцию, которой нет у одного chroot.

Что такое пространство имён?

Пространство имён группирует объекты Nanocl, например Cargo и виртуальные машины. Сети Docker локальны для узла и не принадлежат пространствам имён.
Например, объекты разных доменов facebook.com и instagram.com можно разделить по пространствам имён.

Последнее обновление