Ⓢⓔⓡⓖ
Можно ли в докере зафризить контейнер, сделав его снапшот, как в libvirt/kvm, временно выключив, а потом возобновив выполнение ?
Ⓢⓔⓡⓖ
Например нужно перезагрузить физический сервер, и чтобы на контейнеры это никак не почувствовали ?
Ⓢⓔⓡⓖ
В случае kvm - Это фриз всех машин с сохранением состояния, ребут, а потом восстановление с прежней точки сохранения
Ⓢⓔⓡⓖ
А в докере как?
Alex
А в докере как?
Возобновить выполнение контейнера нельзя. Каждый раз контейнер будет создан снова из образа, который вы создаете заранее или берете готовый из репозитория
Alex
То есть если вы хотите перезагрузить докер хост, то контейнеры нужно пересоздать на этом хосте
Alex
Поэтому в контейнерах нельзя хранить persistent информацию, ее нужно выносить вне. Например логирование, базы данных...
Alex
Процедура перезапуска легко автоматизируется и даже не требует вашего участия. Нужно только убедиться, что контейнеры завелись и работают так, как нужно
Alex
Получается вы можете переносить образы на любые докер хосты и разворачивать аналогичные окружения на множестве хостов
Ⓢⓔⓡⓖ
Хорошо, спасибо
Alex
Хорошо, спасибо
Пожалуйста
Alex
Я не прав?
Alex
В контексте своих проблем разобрался.
Alex
Ну, я же уточнил, базы данных, логи. То есть те файлы, которые часто меняются. Если на хост их не монтировать, то они благополучно умрут вместе с контейнером и после перезагрузки контейнера данные будут взяты из имиджа.
Alex
Думаете ошибка в моем понятии о persistent data?
Alex
Я говорил не о проектах, а он данных, которые генерируются в процессе работы служб внутри контейнеров.
Alex
А я сказал, что перзистэнт нельзя хранить в контейнере, не вижу противоречий.
Alex
В смысле в Dockerfile?
Alex
Ну, да, вы правильно говорите.
Alex
Кстати. Я долго мучался с темой volume, пока не понял, что если я буду использовать compose, то подход придется изменить.
Alex
Код каша, правда. Уже исправил.
Alex
А в контейнере права останутся же?!
Alex
Константин. В процессе разработки служб с докером в система копится куча контейнеров, образов и прочей херни. Есть ли инструменты из комьюнити, чтобы вычищать все, или только самописные скрипты?
Cin
prune
Slach
docker system prune -f
Alex
Давай :)
Alex
@cinerar @BloodJazMan Спасибо, это есть в доках. Не нашел раньше...
Cin
А кто как эту persistent data хранит?
Cin
Ну кроме проброса на хост
Alex
По умолчанию это uid=1000?
Alex
Ок, это был уточняющий вопрос :)
Cin
Хорошо, спрошу по другому, кроме ceph кто-нибудь что-нибудь с докером использует?
Cin
Вот есть у меня 5 машин, как мне обеспечить, что-бы у меня данные к контейнеру переезжали? Или прибивать контейнер гвоздями к хосту на котором данные?
Cin
А есть что-нибудь толковое что по этому поводу почитать/посмотреть кроме Гугла?
Cin
С nfs как я понимаю остаётся 1 точка отказа.
Cin
Ясно. Docker же купили infinit.sh в декабре, очень интересно чего у них получится, на презентациях выглядело очень красиво.
Cin
А portworx.com не смотрел?
Cin
Как посмотришь напиши в чат пожалуйста как ощущения.
Alexander
офигенно обновился на бетку)
Alexander
теперь нужно писать reset перед запуском любых скриптов в контейнере чтобы в терминале всё нормально показывалось
Alexander
/bin/bash -c 'reset && cmd' вместо просто cmd
Alexander
иначе вот типа такого https://habrastorage.org/web/d73/fcb/5fa/d73fcb5fa51e4da683a1be7d70e7b814.png
Alexander
edge, точнее
Alexander
Docker for Mac
Alexander
ненавижу даунгрейдиться
Alexander
пусть будет с reset) не так уж и мешает, просто это говорит об уровне тестирования продукта)
Alexander
написал потому что, возможно, у кого-нибудь из этого чата такая же проблема была/есть и он не знает, как её решить)
Alexander
ну да, наверное
Дима
Как это фиксить я конечно не помню)
Дима
Но проблема не у тебя одного 100%
Alexander
ну оно вроде пока норм работает с reset
Alexander
в следующей сборке, наверное, поправят уж
Artem
Uid на хосте может не совпадать с uid в контейнере
🦠
1001 в докере
🦠
проще передать UID и GID из хоста в контейнер
🦠
там создать юзера с этими айди
Ilya
Друзья, кто-нибудь имел опыт использования --cache-from в последних версиях докера? Выполняю такие команды на разных платформах (пересобираю тот же образ `my-image:v1.0.0`): docker pull my-image:v1.0.0 docker build --cache-from=my-image:v1.0.0 . и часто результаты не совпадает. Где-то сборки не происходит, все берется из кэша, где-то выполняется только часть шагов, где-то все шаги пересобираются заново. Кто-нибудь встречался с такой проблемой?
Artem
так ты предлагаешь задать тот же uid что и в контейнере
Artem
вот именно, что его может и не быть
Artem
тогда к чему твой совет, который безмысленный?
Artem
Задай папке не хосте права на тотже uid что в контейнере
Artem
плин
Artem
на прочитал как и
Ilya
В докерфайле ничего не менялось Единственное, что собирал на другой "машине".
Ilya
Это я так пытаюсь понять, как работает опция --cache-from. Я использую gitlab-ci для сборки базовых образов, а раннеров большое количество. Заранее не знаешь, на какой раннер попадет сборка (например на тот, на котором нет кэша). Поэтому чтобы не создавать дополнительных проблем с прибиванием таких задач к конкретным раннерам, я делаю сначала docker pull, а затем docker build --from-cache. Иначе получается, что все образы каждый раз пересобираются с нуля и нет профита от кэша докера со всеми вытекающими.
Ilya
Разумеется, в реальном мире будет что-томеняться. Я просто заметил, что опция --cache-from ведет себя как-то неоднозначно (на первый взгляд). Исходя из доки, в примере, когда dockerfile не меняется, пересборки вообще не должно происходить. А на деле это не так. Вопрос прежний - почему такая неоднозначность? На разных хостах хэш для образов счетается по разному? Почему докер не переиспользует образы с опцией --cache-from?
Ilya
нет, это врядли.
Ilya
Здесь тоже. Образ также называется
Ilya
Ответ - нет. COPY не 1, 2-м.
Ilya
т.е. ты никакой проблемы не заметил?
Ilya
Понял. Я попробую тогда какой-нибудь публичный образ взять и скинуть пример. У меня, например, в некоторых случаях даже первый слой из кэша не берется.
Lupsik Pupsik
кто-нибудь собирал kubernetes-кластер из docker-compose?
Lupsik Pupsik
хочу, чтобы у меня была нормальная локальная конфигурация и кластер в продакшине
Lupsik Pupsik
есть ли норм гайды?
Dima
Коллеги, всем привет! Помогите пожалуйста со следующим. Поднимаю контейнеры докер-компоузом, пара сервисов+монго, стандартный образ, порты маппятся 27017:27017. Из других сервисов к сервису монго обращаюсь по имени, mongo-service1:27017. Возникла необходимость поднять второй сервис монги на порту 27018, я просто добавил еще один сервис mongo-service2, маппинг 27018:27017. Но при обращении mongo-service2:27018, пишет Connection Refused. Что я упустил?
Dima
порты же конфликтовать будут не?
Dima
https://stackoverflow.com/questions/42704844/docker-run-mongo-image-on-a-different-port
Dima
я вот нашел решение
Dima
спасибо, что откликнулись