LINUX.ORG.RU

Как лоровцы сохраняют контейнеры Docker?

 , ,


2

1

Здесь можете пофлудить об опыте работы с docker, podman, а также выразить своё неудовольствие этим программным решением.

Моя проблема: Контейнер с изменениями после отключения (podman stop ID, или обычном CTRL+C) при следующем включении (podman start ID, podman attach ID) запускается как неизменённый.

Что я делаю: Запускаю образ local-ai: podman run -p 8080:8080 --name local-ai -ti localai/localai:latest-aio-gpu-intel-f32. Образ запущенный в контейнере начинает работу: сразу же начинает скачивание ИИ моделей. После скачивания предлагает перейти в веб-интерфейс. Но! Вот мне надо выключить комп или попросту завершить «работу», как сохранить загруженные модели?

К тому же, подумал забить на это и настроить веб-интерфейс для podman.

Решение проблемы: Чтобы остановить — podman stop local-ai, чтобы потом продолжить — podman start local-ai. Всё сохранится! То есть подставить указанный --name.

Вывод: Докер — шляпа

Перемещено leave из talks



Последнее исправление: temak (всего исправлений: 4)

Ответ на: комментарий от rupert

Почему-то не так. Хотя смутно помню, что раньше, чтобы образ (федоры) запущенный в контейнере со сделанными изменениями был сохранён, его надо было клонировать (по моей догадке). Правда, так и не понял, как это сделать сейчас, учитывая что начал делать по гайдам, по которым, если отключить контейнер он уже сохранённый, а позже узнал, что есть commit и volume. Я только лишь вспомнил о container clone. Весьма ущербно всё это.

temak
() автор топика
Ответ на: комментарий от George

Если не сложно распиши как сам делал. Буду очень признателен! Просто, пока мне синтаксис не понятен у volume, а именно: мне надо путь к контейнеру прописать чтоль? Завтра почитаю и попробую снова.

Или использовать более подходящие lxc/lxd?

Даже не знаю, что это?

temak
() автор топика

Не надо сохранять. Все изменения нужно записывать в Dockerfiles и пересобирать контейнер. Я одно время ленился и сохранял изменения в контейнере через docker commit. В итоге потом не знаешь что там у тебя налеплено.

ox55ff ★★★★★
()
Ответ на: комментарий от ppy

Но ведь контейнеры - стейтлесс.

Спасибо, кэп.

(смотря что нужно сохранять)

Вернулся к затее локальных ИИшек. Из перепробованных способов установки LocalAI самым простым (в теориии) оказался docker, тем более, его и так таким представляют разработчики, забывая, что гики бывают разные.

temak
() автор топика
Ответ на: комментарий от ox55ff

пересобирать контейнер

Который весит 50 ГБ? Разве, это не мазохизм?

Я одно время ленился и сохранял изменения в контейнере через docker commit.

Мне бы твои проблемы…

temak
() автор топика

Провокационный вопрос. А есть что то поудобнее чем докер? Или он вершина эволюции?

Например, у меня есть нечто типа контейнера, и он запущен с какими то параметрами. Я яндексил до посинения, но так и не понял где их найти и отредактировать

Мне нравится работа с образами в виртуальных машинах, но и там тоже есть нелепости и проблемы

То есть, с одной стороны докер мощное решение, но работа с ним вызывает отвращение как с git

По теме: commit/save/export

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от temak

Это ожидаемое поведение. Если ты хочешь сохранять данные между запусками то надо подмонтировать в твой контейер место которое будет эти данные хранить. Можешь раскурить докер любой бд как сделан.

ya-betmen ★★★★★
()
Ответ на: комментарий от temak

Контейнер состоит из слоёв. Будут пересобраны только изменившиеся и все последующие. Можно заранее прикинуть что будет меняться и разместить эти слои в конце.

ox55ff ★★★★★
()

Создать директорию для внешнего хранилища (volume) на хосте. Добавить в Dockerfile/compose.yml инструкции для монтирования хранилища.

PS Docker’у уже больше 10 лет.

axle_nix ★★
()

Моя проблема: Контейнер с изменениями после отключения (podman stop ID, или обычном CTRL+C) при следующем включении (podman start ID, podman attach ID) запускается как неизменённый.

Ты что-то делаешь не так. Контейнер и не должен изменяться.

Zhbert ★★★★★
()
Ответ на: комментарий от vbr

Запускаю образ local-ai: podman run -p 8080:8080 --name local-ai -ti localai/localai:latest-aio-gpu-intel-f32. Образ запущенный в контейнере начинает работу: сразу же начинает скачивание ИИ моделей. После скачивания предлагает перейти в веб-интерфейс. Но! Вот мне надо выключить комп или попросту завершить «работу», как сохранить загруженные модели?

К тому же, подумал забить на это и настроить веб-интерфейс для podman.

temak
() автор топика

как сохранить загруженные модели?

docker volume ?

Но вообще выключенный контейнер никуда их не удалит. Он после перезапуска сохранит свое состояние

Andreezy
()
Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от temak

Рекомендую не маяться дурью, снести докер, поставить anaconda и переключаться между окружениями через conda activate имя_окружения. Быстро, просто, удобно, позволяет иметь в разных консолях разные версии питона и его библиотек что даёт возможность делать локальные пайплайны под любые сети (с разными версиями torch, transformers и тд под каждую сеть).

Obezyan
()
Ответ на: комментарий от MagicMirror

Вот ещё хомяк этим мусором захламлять

Мусор у вас в голове, а анаконда ставится в /opt/anaconda и каждое окружение лежит там отдельным подкаталогом. На данный момент это стандарт в разработке и использовании нейронных сетей локально, наряду с jupyter notebook.

Obezyan
()
Ответ на: комментарий от MagicMirror

Я с вами на ты не переходил, про мусор первые заявили вы, причём необоснованно, не разбираясь в вопросе, лишь бы ляпнуть.

Пришлось показать вам зеркало и походу, собственное отражение вам не понравилось, подумайте над этим.

Obezyan
()
Ответ на: комментарий от Obezyan

Быстро, просто, удобно, позволяет иметь в разных консолях разные версии питона и его библиотек что даёт возможность делать локальные пайплайны под любые сети (с разными версиями torch, transformers и тд под каждую сеть).

Звучит как описание обычного venv.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Звучит как описание обычного venv.

Да, вы правы, довольно похоже, просто в anaconda больше возможностей из коробки, там можно прям версии питона (и R) указывать в окружениях и сама conda имеет готовые репозитарии с пакетами под нейронки что очень удобно для случаев когда установка через pip падает на сборке колеса (wheel).

Другими словами - анаконда просто больше заточена под создание окружений для нейронок и аналитики.

Obezyan
()
Ответ на: комментарий от temak

Раз анаконда такая раз такая, то почему её нельзя скачать без регистрации?

Я думаю это для того чтобы потом залогинившись в самом анаконда-навигаторе пользоваться возможностью выкладывать свои настроенные окружения и делиться ими как, например, образами докер делятся.

Я этот функционал не использую, тк работаю с conda в консолях и гуевый навигатор мне не нужен, потому не могу рассказать подробнее, но вообще там своя инфраструктура для юзеров помимо сугубо локального использования и возможность все натыкать мышкой.

Obezyan
()