@docker_ru
Docker — русскоговорящее сообщество

Обсуждаем вопросы, посвященные Docker🐳, Docker Swarm и всей экосистеме. Обмениваем идеями, новостями и решаем пробемы. Вам могут быть полезны: @coreos_ru, @kubernetes_ru, @devops_ru, @rkt_ru Рекомендуем сразу отключить уведомления для удобства

2608 members

Архив канала @docker_ru 3 октября 2016 г.

11:28:17 ДП
User 89706347
привет, я новичок в докере, каким образом лучше делать апдейт вендоров, применять миграции и подобное? и по поводу кода - лучше сделать дата контейнер, или тянуть из гита?
11:29:09 ДП
User 105697514
код + окружение -> имейдж
11:29:35 ДП
User 183988217
Лучше код отдельно держать. Тогда при изменении кода не надо будет имадж билдить заново.
11:29:46 ДП
User 105697514
а вообще лучше посмотреть туториал для технологий которыми пользуетесь
11:30:06 ДП
User 105697514
а докер для чего используете если для запуска на стороне разработчика то код отдельно
11:30:12 ДП
User 105697514
если для деплоя то код внутри
11:31:34 ДП
User 183988217
User 89706347
привет, я новичок в докере, каким образом лучше делать апдейт вендоров, применять миграции и подобное? и по поводу кода - лучше сделать дата контейнер, или тянуть из гита?
По поводу апдейта и миграций могу посоветовать смотреть в сторону zero downtime docker doployment.
11:32:39 ДП
User 89706347
спасибо за ответы, буду разбираться дальше
12:20:59 ПП
User 66455447
Коллеги, приветствую, помогите советом. Уже несколько раз при перезапуске докера на демо площадке вываливалась ошибки Driver aufs failed to remove root filesystem. Ткните пожалуйста носом в решение этой проблемы. Всё что нахожу в интернете касается старых верси и сводится к "обнови докер". Почему вообще возникает эта ошибка?
12:21:29 ПП
User 66455447
ошибка возникает при docker-compose down
12:22:49 ПП
User 54466621
какая система?
12:23:02 ПП
User 66455447
дебиан 8
12:23:23 ПП
User 66455447
докер из репозитория, композ с сайта докера
12:23:32 ПП
User 54466621
версия докера?
12:23:56 ПП
User 66455447
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 05:02:53 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 05:02:53 2016
 OS/Arch:      linux/amd64
12:24:49 ПП
User 54466621
у тебя что-то с драйвером стороджей, как вариант можно overlay2 попробовать подключить
12:25:51 ПП
User 66455447
вместо aufs? или это что-то другое?
12:26:08 ПП
User 54466621
вместо aufs
12:28:21 ПП
User 66455447
хорошо, спасибо, попробую собрать с этой системой
12:28:45 ПП
User 54466621
хотя все должно и так работать
12:29:40 ПП
User 66455447
а это может возникать из-за того, чтго в момент выключения идёт запись или чтение?
12:30:01 ПП
User 66455447
причем это сразу у всех контейнеров в связке проблема возникает
12:30:10 ПП
User 66455447
то есть не отдельный один контейнер не может выключиться
12:46:57 ПП
User 71516652
aufs депрекейтед и не рекомендуется к использованию вообще
12:48:45 ПП
User 75214547
Всем, привет! Наверняка тут уже обсуждали. Но у меня возник вопрос - а вообще есть какой-нибудь смысл например, докеризировать nginx? или postgres? Если они находятся вокруг веб-сервиса.
12:55:44 ПП
User 186245040
ну... почему нет
12:56:32 ПП
User 75214547
а смысл?
12:57:44 ПП
User 233427097
User 75214547
Всем, привет! Наверняка тут уже обсуждали. Но у меня возник вопрос - а вообще есть какой-нибудь смысл например, докеризировать nginx? или postgres? Если они находятся вокруг веб-сервиса.
Чтобы вся система в сборе шла одной коробкой
12:57:44 ПП
User 2339730
А умножаем на B Умножаем на C, если затраты на доработку больше X, возврата не будет
12:58:12 ПП
User 2339730
если обновлять всю байду дешевле в монолитном виде, то не нужно.
12:58:33 ПП
User 2339730
подозреваю что и докер при этом вам не особо нужен )
12:59:46 ПП
User 75214547
ну как, для сервиса понятно, зачем он нужен, чтобы не думать про зависимости. Для nginx - не знаю…
12:59:56 ПП
User 75214547
ДЛя базы вообще очень странная история
12:59:57 ПП
User 233427097
Хотя зависит от ситуации, конечно. Если это один сервис у компании (или их всего парочку), то можно и отдельно хостить
01:00:18 ПП
User 233427097
а если много разных сервисов, то лучше одной коробкой ставить
01:04:11 ПП
User 75214547
ну как бы база - это не то, что хочется ставить докером )
01:06:38 ПП
User 2339730
теоретически у вас файловое БД монтируется снаружи , но скорее всего практически там дофига проблем. + БД не так часто меняется как приложение, как исходники так и какая-то конфигурация ... так что да, скорее всего вы правы, нафига оно надо )
01:21:49 ПП
User 89706347
хм, бд может меняться очень часто, конкретно у нас так и происходит
01:23:04 ПП
User 2339730
вы говорите про миграции или про обновление ПО самой БД?
01:23:43 ПП
User 2339730
миграции - АКА изменение пользовательских данных ... как правило, хотя многие в миграциях меняют системные данные
01:26:32 ПП
User 89706347
миграции - изменение структуры бд, сиды - изменение данных
01:26:39 ПП
User 89706347
я говорю именно о миграциях
01:27:09 ПП
User 89706347
новые фичи почтоянно требуют новых таблиц/полей в уже существующих таблицах
01:27:37 ПП
User 89706347
так-что каждый третий билд в нашей компании включает в себя и миграции тоже
01:29:59 ПП
User 75214547
А как докер помогает с миграциями?
01:30:45 ПП
User 77550740
Я предположу что лучше всего делать миграции в два шага
01:30:54 ПП
User 77550740
Сначала добавить допустим новое поле
01:31:02 ПП
User 77550740
следующим билдом научить приложение это поле использовать
01:31:05 ПП
User 89706347
я новичек, но пока вижу это как таск в дженкинсе а-ля стянуть все из гита, выполнить миграции/сиды, прогнать тесты, запихнуть в контейнер, и задеплоить на продакшн, если все ок
01:31:24 ПП
User 89706347
а если поле переименоывается/убирается?
01:31:29 ПП
User 77550740
У тебя база в проде, и она может быть большой
01:31:44 ПП
User 77550740
User 89706347
а если поле переименоывается/убирается?
Ага, косяк моей идеи.
01:31:48 ПП
User 89706347
она и есть большая
01:31:50 ПП
User 77550740
убирается то легко.
01:31:56 ПП
User 77550740
А вот переименовать ...
01:32:04 ПП
User 89706347
угу, и половина вьюх слетит
01:32:27 ПП
User 89706347
миграции для того и нужны, чтоб изменения  бд и кода применялись одновременно
01:35:10 ПП
User 2339730
не все миграции совместимы с обновлением кода. 
например,  в схеме, когда у вас head/tail базы (в проде используется одна из и с каждым релизом они меняются местами) самый сложный вариант миграции
это изменение формата поля ... так вот он делался в 5 шагов. то есть в 5 релизов
чтобы было forward & backward compatibility
01:36:21 ПП
User 49536752
User 2339730
не все миграции совместимы с обновлением кода. 
например,  в схеме, когда у вас head/tail базы (в проде используется одна из и с каждым релизом они меняются местами) самый сложный вариант миграции
это изменение формата поля ... так вот он делался в 5 шагов. то есть в 5 релизов
чтобы было forward & backward compatibility
Почему пять, трёх не хватит?
01:36:46 ПП
User 2339730
я лучше потом в личку воспроизведу, если не горит. сейчас чутка занят
01:37:31 ПП
User 49536752
User 2339730
я лучше потом в личку воспроизведу, если не горит. сейчас чутка занят
ok)
01:38:46 ПП
User 89706347
возможно, я не встречался пока с какими-то случаями, но если миграции транзакционны, и имеют полноценны down (да, это не всегда возможно, или очень трудозатратно), то достаточно одной бд, если же дауна нет, то две бд, и переключение в зависимости от версии релиза
02:03:47 ПП
User 77550740
User 89706347
миграции для того и нужны, чтоб изменения  бд и кода применялись одновременно
Миграции нужны чтобы мигрировать схему базы. Точка.
02:05:25 ПП
User 2339730
ну нет, это слишком строгое ограничение.
02:06:08 ПП
User 83412664
это не ограничение, а определение
02:06:49 ПП
User 89706347
если бы они не помогали обеспечивать косистентность версии бд с версией кода - я бы их не испольовал)
02:07:07 ПП
User 77550740
Делайте в два шага, что я еще могу сказать.
02:07:25 ПП
User 89706347
зачем в два?)
02:07:32 ПП
User 77550740
На больших базах выполнение миграций это жесть по времени.
02:07:45 ПП
User 77550740
User 89706347
зачем в два?)
Потому что если делать в один шаг то придется полный цикл миграций накатить
02:07:52 ПП
User 89706347
ну миграции тоже разные бывают
02:07:55 ПП
User 77550740
Например, добавить поле и удалить еще какое то.
02:08:15 ПП
User 2339730
User 83412664
это не ограничение, а определение
класс, вы предлагаете все делать по букве?
02:08:18 ПП
User 77550740
Все это долго. Если раскатить это на несколько шагов то это позволит достичь меньшего даунтайма.
02:08:31 ПП
User 77550740
И научить код работать с двумя полями одновременно
02:09:04 ПП
User 77550740
Сложные миграции должны накатываться без простоя имхо. Либо простой должен быть гарантированно небольшим.
02:09:33 ПП
User 77550740
Иначе прод будет простаивать пару часов
02:10:15 ПП
User 89706347
собственно, дженкинс заливает код в папку нового релиза, делает копию бд, накатывает миграции и мы переключаемся на новый релиз, зачем мне дайнтайм?
02:10:24 ПП
User 77550740
Стоп стоп стоп
02:10:29 ПП
User 77550740
что происходит со старой версией базы?
02:10:35 ПП
User 77550740
туда в реалтайме могут новые данные приходить
02:10:44 ПП
User 77550740
вы просто теряете часть данных
02:10:48 ПП
User 83412664
User 2339730
класс, вы предлагаете все делать по букве?
нет, ты просто путаешь конкретный кейс с определением. миграция - это миграция базы, а конкретный твой кейс - миграция помогает при деплое достичь консистентности кода и базы.
02:10:57 ПП
User 77550740
представьте что вы зашли на авито, добавили объявление а потом обнаружили что его там и не было никогда.
02:11:52 ПП
User 77550740
Так как с переключением базы вы не допускаете потерь данных?
02:11:58 ПП
User 89706347
ок, вместо копии используем репликацию
02:12:13 ПП
User 77550740
постгрес вроде позволяет в транзакции накатывать обновление схемы данных
02:12:51 ПП
User 2339730
User 83412664
нет, ты просто путаешь конкретный кейс с определением. миграция - это миграция базы, а конкретный твой кейс - миграция помогает при деплое достичь консистентности кода и базы.
возможно и путаю, но фишка в том, что на практике надо отталкиваться от того, что сейчас есть, а не от "определения слова миграция"
02:13:30 ПП
User 77550740
То что сейчас есть? а что есть? то что у вас есть то на вас и накладывает ограничения.
02:14:40 ПП
User 77550740
Вроде в постгрессе можно накатывать обновление схемы в транзакции. Следовательно достаточно сделать так чтобы старый код мог работать с новой схемой пока новый код не будет запущен во всех инстансах
02:14:48 ПП
User 77550740
А следовательно лучше делать миграции базы в два шага.
02:15:08 ПП
User 77550740
Возможно кто то более опытный что подскажет? хотя мне кажется это больше для канала по базам данных.
02:15:57 ПП
User 89706347
ну да, моя база не содержит такого кол-ва данных, чтоб миграции выполнялись дольше пары секунд
02:16:12 ПП
User 77550740
Тогда у вас и проблемы нет
02:16:21 ПП
User 77550740
я говорю про базы где даунтайм может достигать хоть полчаса.
02:16:41 ПП
User 77550740
Впрочем даже 10 минут имхо перебор, если сайт не заточен на конкретную временную зону.
02:45:10 ПП
User 157588686
User 66455447
докер из репозитория, композ с сайта докера
все верно говорят, докер из репозитория ставить нельзя, т.е. лучше такого не делать. ставь докер инсталл скриптом
02:46:01 ПП
User 66455447
User 157588686
все верно говорят, докер из репозитория ставить нельзя, т.е. лучше такого не делать. ставь докер инсталл скриптом
спасибо, займусь.
03:14:41 ПП
User 123761909
User 89706347
так-что каждый третий билд в нашей компании включает в себя и миграции тоже
ну это веский аргумент, чтобы использовать докер
03:16:03 ПП
User 89706347
где я говорил, что это аргумент к использованию докера?
03:17:16 ПП
User 123761909
там выше обсуждали докеризацию бд и смысл этого
03:21:56 ПП
User 89706347
я просто возразил на то, что бд может изменяться чаще, и все
03:27:01 ПП
User 75214547
> Anton
я просто возразил на то, что бд может изменяться чаще, и все

Просто тут надо понимать, что докер про ЧАСТО ИЗМЕНЯЕМЫЙ КОД сервисов, а не про часто изменяемые данные. Поэтому сколько там раз миграции применяются - не столь важно.
03:28:38 ПП
User 89706347
применение миграций - это часть деплоя, все же)
05:39:45 ПП
User 6309862
Небольшой обзор докладов на предстоящей конференции "Linux Piter #2":
https://habrahabr.ru/company/emc/blog/311614/
habrahabr.ru/company/emc/blog/311614
Программа конференции Linux Piter 2016, которая пройдет 11-12 ноября этого года в Питере, сформирована на 95%. В этом году на Linux Piter намного больше...
08:15:54 ПП
User 73314880
Ребят, можете помочь с докером? Уже совсем с ног сбился :( Все время после перезагрузки поднимается интерфейс docker0. Причем контейнеров докеровских никаких нет, все удалены. Но интерфейс поднимается, на пинги отвечает, апач на нем работает. Где можно найти этот неуловимый конейнер?
08:17:05 ПП
User 177558402
docker ps что показывает?
08:17:10 ПП
User 73314880
пусто
08:17:20 ПП
User 73314880
В том то и суть. И от пользователя, и от рута
08:17:39 ПП
User 177558402
netsta -ntlp
08:17:53 ПП
User 70615624
И docker ps -a пустой?
08:18:02 ПП
08:18:16 ПП
User 177558402
в хост системе есть апачь?
08:18:49 ПП
08:19:05 ПП
User 177558402
опусти его и не дудет отвечать
08:19:26 ПП
User 177558402
или listen сделай на конкретный ip
08:19:43 ПП
User 177558402
netstat -ntlp | grep 80
08:20:13 ПП
User 73314880
убил апач, отвечать перестал
08:20:22 ПП
User 177558402
Думаю будет что типа 
tcp6       0      0 :::80                   :::*                    LISTEN      3810/apache2
08:20:26 ПП
User 73314880
Интерфейс только не пойму откуда берется
08:20:50 ПП
User 177558402
демон докера его подинмает
08:22:00 ПП
User 73314880
а откуда? Я уже ведь всей контейнеры удалил
08:28:24 ПП
User 177558402
https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/#customize-the-docker0-bridge
docs.docker.com/network/bridge
All about using user-defined bridge networks and the default bridge
08:28:53 ПП
User 177558402
глубже не копал