Georgiy
именно обновления
Georgiy
потому что это все придеться перезакачивать каждый раз
bama^boy
потому что это все придеться перезакачивать каждый раз
если подключается как volume, то нет Вон тот же hdfs можно по NFS монтировать
Alexey
Хм... Ну.. Тогда все же я думаю будет удобнее мне скачивать из вне для начала, а уже когда все будет готово, то можно в докер внутрь запихать, чтоб клиент не мучался
bama^boy
данные можно динамически изменять без перезапуска контейнера и пересборки образа
Georgiy
давно не получали локи на сисколлах?
Georgiy
данные можно динамически изменять без перезапуска контейнера и пересборки образа
я с нейронками не сталкивался, но догадываюсь что там как и у нас нет понятия «изменить», а есть понятие «пересчитать заного»
Georgiy
так что все равно придеться решать кейс доставки их до хранилища
bama^boy
монтировать по nfs это фейспальм
вполне себе нормальная практика, смотря для чего конечно локи скорей всего из-за неправильной архитектуры приложения, если много процессов работает с 1 файлом, например
Georgiy
вот сеть моргнет, и у вас висящий сисколл с неприбивающимся процессом по девятке
bama^boy
я работаю с AWS EFS, это сетевая FS от амазона, проблем с ней почти нет, последний раз было что-то с локами около полугода назад
bama^boy
вот сеть моргнет, и у вас висящий сисколл с неприбивающимся процессом по девятке
так таймауты выставляются, плюс последняя версия NFS 4 сильно лучше старых
Georgiy
я работаю с AWS EFS, это сетевая FS от амазона, проблем с ней почти нет, последний раз было что-то с локами около полугода назад
это если вы можете гарантировать стабильность(а стабильность это чаще исключение из правил), и если модуль в ядре для этого драйвера fs может отдать на лаг io error
bama^boy
я не говорю, что nfs - это серебряная пуля, это один из широко используемых стандартов в индустрии есть еще всякие iscsi nas и т.п.
George
Ну... Хорошо. В общем, у меня есть обученная нейронка, есть к нему веса (Если грубо, то это большая матрица из чиселок, весит почти 600 Мб). Надо все это завернуть в докер и поднять его в облаке. Вопрос в том, надо ли веса запихивать в образ докера или нет?
у тебя вариантов два 1. хранить веса в сторедже типа S3. Внутри твоего контейнера несколько ручек, которые позволяют обновлять веса, и подгружать определенную версию 2. хранить веса в докер образе. При появлении новой модели выпускать новый образ с новой версией. Его и деплоить
George
как бы зависит от постановки задачи. Как часто тебе нужно катить новую версию модели, нужен ли откат, умеет ли контейнер переобучаться или только использует предрасчитанные веса
George
Понял. И чтобы сервисы из докера видели файлы скачанные из внешних источников, надо, к примеру, использовать VOLUME в Dockerfile?
VOLUME внутри докерфайл это до некоторой степени фикция. Во-первых, это аннотация для пользователя докер образа. Во-вторых, эта директива создает БЕЗЫМЯННЫЙ volume. От которого толку пока ты что-то явно не напишешь - НОЛЬ
Alexey
Новые версии не слишком часто, откаты пока не важны, использует только предрасчитанные веса
George
в смысле - одной версии?
Alexey
Да
George
тогда вообще забей и вшивай веса внутрь образа
Alexey
Понял, спасибо всем большое! ) И еще, есть у кого может ссылка рядом с примером из практики как все это сделать от и до для нейронных сетей? Я просто гуглю и там два варианта: либо это использование уже сгенеренных образов, либо создание что-то вроде почтового сервиса с подключением БД
George
ээээ. не понимаю
George
я вообще все модели собирал из базового alpine. Путем доустановки всего необходимого ПО
Alexey
Ну... Скажу так, читать про докер я начал часа 3 назад ) В теории что да как я вроде понял, на практике, не очень понимаю как это устроено
George
кратко - докер - это типа git, но для бинарных файлов
George
образ = набор слоев файловых систем.
Alexey
То есть получается sudo docker run ... *** поместит все файлы из папки *** в образ, а при запуске образа выполнятся все инструкции из Dockerfile?
Artur
почти
Artur
на основе докерфайла "копмилится" имейдж
Alexey
Страшные вещи, как docker composer пока не считаю )
Alexey
Понял, спасибо
Artur
а docker run уже запускает этот имейдж
George
docker run запускает его в рантайм
Alexey
Ой, да, перепутал
George
причем ты можешь выбрать какую программу запустить из образа путем переопределения entrypoint ИЛИ cmd, ИЛИ обоих параметров
Alexey
Ага, видел про CMD, спасибо
George
там много нюансов )
Artur
entrypoint не переопределяется же
Artur
при запуске
George
кратко: - может взорваться где угодно - entrypoint обычно для постоянной части (например, полный путь к бинарю) - cmd - преимущественно для переменной части (например, аргументы и ключи)
George
entrypoint не переопределяется же
ты не прав. Есть отдельный ключ коммандной строки docker run
Artur
"Note: you can override the ENTRYPOINT setting using --entrypoint, but this can only set the binary to exec (no sh -c will be used)." не стоит так делать
George
например, при глубокой отладке docker образов
Artur
какае-то не правильная отладка у вас
Artur
и как после такой отладки убиваете контейнер ?
Artur
киллом ?
George
киллом ?
docker run -it --rm --entrypoint /bin/bash nginx
George
например, удобно чтобы доустановить пакеты ) и проверить сразу работоспособность
Sergey
https://github.com/pyouroboros/ouroboros
Sergey
Юзал кто?
Дмитрий
Кто использовал dnsmasq, посмотрите, изнутри контейнера разве не должен грепаться DNS-сервер локальный?
Дмитрий
https://pastebin.com/DkcETPJ4
Илья
Три новых юзера, на ботов прям смахивают))
Den
Три новых юзера, на ботов прям смахивают))
когда насосдавал контейнеров без указания имени
Илья
)
Dmitry
Привет! Подскажите пожалуйста, как я могу обновить только последний слой образа? Проблема в том, что мне нужно обновить requirements.txt, но проект целиком билдить нельзя (это займет очень много времени). Может быть как-то можно установить pip3 пакет, чтобы они сохранились после перезапуска образа? Спасибо
Dmitry
FROM ubuntu:18.04 ENV LANG C.UTF-8 ENV PYTHONUNBUFFERED 1 ENV C_FORCE_ROOT true # Install dependencies RUN apt-get update \ && apt-get install -y git \ && apt-get install -y python3-dev python3-pip \ && apt-get install -y binutils libproj-dev gdal-bin \ && cd /usr/local/bin \ && ln -s /usr/bin/python3 python \ && pip3 install --upgrade pip RUN git clone https://git.skewed.de/count0/graph-tool.git # graph-tool compile dependencies RUN apt-get update \ && apt-get install -y gcc libboost-all-dev \ && apt-get install -y autotools-dev automake pkg-config \ && apt-get install -y libcgal-dev libcairo2-dev cairomm-1.0 \ && apt-get install -y python3-cairo-dev libsparsehash-dev RUN pip install numpy scipy # graph-tool compile RUN cd graph-tool && ./autogen.sh && ./configure && make && make install # Project specific setups RUN mkdir /code WORKDIR /code ADD . /code RUN pip3 install -r requirements.txt
Ильдар
кошерный докерфайл. при изменении файлов в рабочей папке изменятся только два последних слоя.
Ильдар
вопрос решён?
Дмитрий
Ну если раньше докер собирался и остался кэш - то можно и заново запустить )
Dmitry
это говно компилируется 2 дня
Ильдар
он начинает тащить убунту и я боюсь
Арча не боишься? ) > tiagopeixoto/graph-tool Arch GNU/Linux container with graph-tool installed
Dmitry
Арча не боишься? ) > tiagopeixoto/graph-tool Arch GNU/Linux container with graph-tool installed
да я и так на арче, только крутиться то это будет на убунте
Ильдар
это говно компилируется 2 дня
какой командой запускаешь сборку? у тебя кэш должен сохраняться с предыдущих раз.
Dmitry
и не уверен, что нужный софт есть на в этом пакете (последня функция появилась только в гите совсем недавно, а без нее кладбище гроб)
Dmitry
какой командой запускаешь сборку? у тебя кэш должен сохраняться с предыдущих раз.
вероятно я чистил кэш через docker system prune запускаю через sudo docker-compose build
Dmitry
Vladislav 👻
Я что-то запутался, разве прун чистит сборочный кэш? 🤔
Vladislav 👻
Мне всегда казалось, что надо флаг при сборке указать...