Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Как обновить контейнер?

    Как обновить контейнер?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Как обновить контейнер?, RouterOS
     
    sunakashi
    Guest
    #1
    0
    12.12.2022 13:57:00
    Пожалуйста, как я могу обновить контейнер, точнее pihole? Я привык работать через SSH, но понятия не имею, как это сделать в RouterOS, и не могу найти ничего по этой теме. Спасибо.
     
     
     
    Z0ltan
    Guest
    #2
    0
    19.02.2023 10:08:00
    Я написал скрипт, но статус контейнера всегда «error» после его запуска. При этом те же команды, введённые вручную, работают.

    /container/stop 0 :delay 20s;  
    /container/remove 0  
    /container/add remote-image=pihole/pihole:latest interface=veth1 root-dir=disk1/pihole mounts=dnsmasq_pihole,etc_pihole envlist=pihole_envs hostname=pihole start-on-boot=yes :delay 60s;  
    /container/start 0
     
     
     
    PeterXC
    Guest
    #3
    0
    24.02.2023 21:24:00
    Я бы добавил logging=yes. В моём случае 60 секунд могут быть слишком короткими. Иногда извлечение занимает больше времени. Учтите, что начиная с версии 7.7 USB-монтирование — это не disk1, а usb1-part1.
     
     
     
    Strykar
    Guest
    #4
    0
    07.03.2025 09:02:00
    Поскольку RoS (7.18.1) уже знает параметры, с которыми был запущен контейнер, было бы полезно добавить функцию Обновления (до :latest) вместе с командами Запуска и Остановки контейнера. При работе с несколькими контейнерами — поиск по имени репозитория и создание вручную вызываемого скрипта для каждого контейнера.

    # update_pihole.rsc  
    /container/stop [find where repo="registry-1.docker.io/pihole/pihole:latest"]
    :delay 5  
    /container/remove [find where repo="registry-1.docker.io/pihole/pihole:latest"]
    :delay 1  
    /container/add remote-image="pihole/pihole:latest" interface=veth1 envlist=pihole_envs root-dir=usb1/pihole mounts=dnsmasq_pihole,etc_pihole domain-name="my.home.lan" logging=yes start-on-boot=yes  
    :delay 90  
    /container/start [find where repo="registry-1.docker.io/pihole/pihole:latest"]

    Отрегулируйте задержки под свои контейнеры, у pihole из тех, что я тестировал, наибольшее время занимает распаковка и запуск. Так как RoS точно знает состояние контейнера, лучше всего реализовать функцию обновления для минимизации простоев при апгрейде адекватных контейнеров, использующих env-переменные или монтирования.

    Список URL репозиториев всех контейнеров:  
    :foreach i in=[/container/print as-value] do={ :if ($i->"repo"!="") do={ :put ($i->"repo") } }

    registry-1.docker.io/pihole/pihole:latest  
    registry-1.docker.io/netbirdio/netbird:latest
     
     
     
    scddt
    Guest
    #5
    0
    07.03.2025 14:17:00
    Если кому-то будет полезно, я сейчас использую такой скрипт: {
    /container;
    :local HN "{{.hostname}}";
    :local TAG "{{.TAG}}";
    :local FN "{{.TAR}}";
    :local START [/system/clock/get time];
    print where tag=$TAG;
    :while ([find where tag=$TAG status=running]) do={stop [find tag=$TAG status=running]; :delay 1;};
    :while ([find where tag=$TAG status=stopped]) do={remove [find tag=$TAG status=stopped]; :delay 1;};
    :while ([find where tag=$TAG]) do={:delay 0.1;};
    add file=$FN envlist={{.env}} hostname=$HN interface=v{{.env}} logging=yes start-on-boot=yes;
    :while ([:len [find where tag=$TAG]]=0) do={:delay 0.1;};
    start [find tag=$TAG];
    :while ([find where tag=$TAG status=stopped]) do={:delay 0.1;};
    print where tag=$TAG;
    :delay 1; # Delay to show startup logs.
    /log/print where time>$START topics=container,info,debug;
    } Ему нужно будет добавить монтирования, но я считаю его удобным. Это часть маленькой программы на go, которая устанавливает одно SSH-соединение, потом сначала загружает образ контейнера (я собираю локально), а потом выполняет обновляющий скрипт. Циклы while с задержками делают процесс быстрым и надежным.
     
     
     
    ssyur
    Guest
    #6
    0
    07.03.2025 17:25:00
    Я использую этот скрипт для Adguard, он сохраняет все настройки и историю. Если историю хранить не нужно → монтирование adguard_work не требуется. Для контейнера veth установлен на 10.0.0.2.

    Монтирования:  
    /ip dns  
    устанавливаю серверы=1.1.1.1

    /container/stop [найти, где comment~"adguard"]
    :пока ([/container print count-only где comment~"adguard" status=stopping] > 0) делать={ :задержка 1 }
    /container/remove [найти, где comment~"adguard"]
    :задержка 5  
    /container/add interface="adguard" remote-image="adguard/adguardhome:latest" mounts="adguard_conf,adguard_work" root-dir="usb1/apps/adguard/root" start-on-boot=yes logging=no comment="adguard"  
    :задержка 3  
    :пока ([/container print count-only где comment~"adguard" status=extracting] > 0) делать { :задержка 1 }
    /container/start [найти, где comment~"adguard"]

    /ip dns  
    устанавливаю серверы=10.0.0.2
     
     
     
    grzegorzb
    Guest
    #7
    0
    26.03.2025 11:39:00
    Самый простой способ обновиться — через Winbox в разделе «container», а затем в командной строке с командой «–update».
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры