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

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

2608 members

Архив канала @docker_ru 14 марта 2017 г.

03:52:09 ДП
User 313053548
Добрый день! Может ли кто-нибудь подсказать, как заставить containerd создавать при запуске pid-файл, который располагается в /run/docker/libcontainerd/docker-containerd.pid
05:15:57 ДП
User 140469657
User 313053548
Добрый день! Может ли кто-нибудь подсказать, как заставить containerd создавать при запуске pid-файл, который располагается в /run/docker/libcontainerd/docker-containerd.pid
Ответа не знаю, но интересно, для чего?
05:25:16 ДП
User 313053548
User 140469657
Ответа не знаю, но интересно, для чего?
Kubernetes требует этот pid-файл, при этом считает ошибкой.
05:26:51 ДП
User 313053548
User 140469657
Ответа не знаю, но интересно, для чего?
Облазил код взятый с гитхаба, но так и не понял убрали этот функционал из последней версии docker/containerd или нет.
11:16:50 ДП
User 50043787
всем добра
когда стартует контейнер с постгрес из официального образа, то он смотрит в специальную папку со скриптами, эти скрипты (файлы .sql или скрипты .sh) можно добавить перед билдом образа и постгра их выполнит сразу после init_db, причем выполнять их будет в алфавитном порядке по именам.
Вопрос такой: если существующая схема БД большая, содержит кучу таблиц/функций и триггеров, то имеет ли смысл разбивать все это добро по отдельным файлам скриптов (например, функции отдельно, индесы отдельно и тд) или лучше держать одну портянку?
11:17:41 ДП
User 51019704
разбивать всегда имеет смысл, безотносительно докера
11:19:20 ДП
User 50043787
если этого хозяйства много, не будет ли проблем с тем, что где-то что-то забыл/недописал при различных дальнейших апдейтах схемы?
11:21:00 ДП
User 83727179
а как потом поделиться образом?
11:21:06 ДП
User 83727179
со своими коллегами
11:21:07 ДП
User 46399435
зачем разбивать если это 1) было сдамплено 2) никто не будет это читать 3) только загрузка будет в новую базу
11:22:11 ДП
User 83727179
просто докерфайл кинуть надо коллегам
11:22:15 ДП
11:27:00 ДП
User 50043787
User 46399435
зачем разбивать если это 1) было сдамплено 2) никто не будет это читать 3) только загрузка будет в новую базу
Идея в том, чтобы контейнер всегда стартовал с актуальной схемой БД. 

Коммитим скрипт в мастер-ветку -> CI-сервак пересобирает образ -> Compose стягивает новый образ и перезапускает контейнер.

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

Естественно все последующие изменения на уже работающей базе будут через ALTER и т.д. И сами данные, которые есть в базе будут в порядке. Такой вот Continuous Migration получается

Или я перемудрил?
11:46:51 ДП
User 293645084
если так делать, то нужно обдумать, как понять какие файлы скормить докеру, чтобы обновить схему бд
11:47:37 ДП
User 46399435
обновлять схему бд надо через описание схемы бд в конкретном языке прогграммирования) как мигимум)
11:48:15 ДП
User 46399435
ну и да, никто не мешает делать migrate при пересоздании контейнера. волюм с данными же не трогается
11:49:26 ДП
User 141975931
Посмотрите в сторону миграций БДшных
11:49:29 ДП
User 293645084
User 46399435
обновлять схему бд надо через описание схемы бд в конкретном языке прогграммирования) как мигимум)
эт типа либу юзать?
11:49:34 ДП
11:49:43 ДП
User 141975931
Наша практика показала что лучше ничего не пилить, а просто делать грамотные миграции
11:49:56 ДП
User 141975931
Единственно важный момент миграции должны быть атомарны
11:50:03 ДП
User 141975931
Не все вещи можно засунуть в транзакции
11:50:05 ДП
User 61193397
User 293645084
orm?
Да
12:39:24 ПП
12:39:40 ПП
User 197837520
я ждал эту шутку)
12:39:42 ПП
12:39:44 ПП
User 78714909
уже было))
12:52:23 ПП
User 50043787
пошучено
12:53:05 ПП
User 46399435
#синийкит #хочувигру
01:01:36 ПП
User 64181113
User 46399435
#синийкит #хочувигру
не в игру, а в деплой
01:06:27 ПП
User 50043787
#синийкит #postgresql #вотэтовотвсе
01:26:14 ПП
User 209288485
User 197837520
я ждал эту шутку)
дада 😂
01:27:03 ПП
User 45933
#морекитов #тихийдом #разбудименяв420 #f57 #f58 #явигре
01:27:12 ПП
User 45933
и уже были блокировки в вк
01:27:34 ПП
01:27:46 ПП
01:27:50 ПП
User 45933
бинго
01:27:52 ПП
User 193200757
Я чо баян кинул
01:28:18 ПП
User 45933
User 180275451
и дня 3 назад было
01:49:06 ПП
User 66989667
а все мирятся с тем, что cadvisor контейнер нужно запускать раньше прочих контейнеров, иначе запущенные до него контейнеры просто не дает удалить из-за примортированного /vat/lib, или я что-то недогоняю и это можно как то пофиксить?
02:01:48 ПП
User 66989667
вернее /var/run
02:04:00 ПП
User 24306243
нормально ли делать такой деплой контейнера (апп)?
1) docker pull <image_name>
2) docker rm <container_name>
3) docker run <container_name>
02:04:24 ПП
User 24306243
на prod, крутиться только docker
02:09:06 ПП
User 209288485
rm без stop же не запускается обычно или?
02:11:59 ПП
User 27126356
Вопрос по третьей версии docker-compose. Как известно там удалили свойство extends. Теперь что, надо явно в каждом конфиге композа дублировать свойства? Все так делают или есть какой то выход?
02:15:23 ПП
User 24306243
ну да вначале stop а потом rm
02:17:59 ПП
User 46399435
User 24306243
нормально ли делать такой деплой контейнера (апп)?
1) docker pull <image_name>
2) docker rm <container_name>
3) docker run <container_name>
rm -f ?
02:19:16 ПП
User 46399435
User 209288485
rm без stop же не запускается обычно или?
ну хз, в комgозе вроде можно делать build запущенного контейнера, и сразу down up , даунттайм по идее меньше
02:33:39 ПП
User 24306243
у меня на проде обычный docker run, через ansible который запускаю.
02:33:45 ПП
User 24306243
все через ansible
02:37:14 ПП
User 24306243
1) docker pull <image_name>
2) docker stop <container_name>
3) docker rm <container_name>
4) docker run <container_name>
02:37:17 ПП
02:37:37 ПП
User 24306243
без всяких наворотов, нормально ли так выкатывать обновление приложения?
02:39:41 ПП
User 117201680
User 24306243
без всяких наворотов, нормально ли так выкатывать обновление приложения?
А никто не дернет этот контейнер пока он обновляется?
02:47:44 ПП
User 125133172
ребят, по какой причине файл может не писаться на диск на сервере ubuntu (EC2), кроме прав на запись? Сервер нодовский в докер контейнере, пишу при помощи fs.writeFileSync(). На локалке работает, на сервере — нет. В логи ничего не выводит. Права на серваке на запись в папку 777. Сама папка создается нормально
02:47:44 ПП
User 125133172
директория /home/photos
02:58:12 ПП
User 66989667
User 24306243
без всяких наворотов, нормально ли так выкатывать обновление приложения?
имхо лучше хотя бы версию в таге имаджа указывать и конкретно с новой версией запускать.
03:08:14 ПП
User 125133172
что интересно, пишу так — работает
03:08:16 ПП
04:07:13 ПП
User 24306243
User 117201680
А никто не дернет этот контейнер пока он обновляется?
нет
04:51:39 ПП
User 209288485
User 46399435
ну хз, в комgозе вроде можно делать build запущенного контейнера, и сразу down up , даунттайм по идее меньше
а реально без даунтайма выкатить апдейт? как в Kubernetes Rolling Update
05:25:00 ПП
User 342142410
User 141975931
Положить nginx в первый контайнер и избежать костылей
Это же вроде как не docker way, держать два процесса в одном контейнере? В моем случае таких контейнеров на одной машине запускается по 30-40 штук, каждый будет содержать в себе лишний процесс nginx?
05:26:41 ПП
User 342142410
User 199194369
И оба других через вольюмес фром прописать
Это подходит для случая, если я данные хочу раздавать из содержимого, которое уже было в image, а не виртуального слоя?
05:33:49 ПП
User 199194369
Если надо сейв, можно во время старта симлинк сделать
05:46:07 ПП
User 342142410
сейв не нужен
05:46:15 ПП
06:15:48 ПП
User 141975931
User 342142410
Это же вроде как не docker way, держать два процесса в одном контейнере? В моем случае таких контейнеров на одной машине запускается по 30-40 штук, каждый будет содержать в себе лишний процесс nginx?
А php-fpm вы тоже отдельно от nginx запускаете? В вашем случае вы предлагаете запустить 30-40 отдельных докеров с nginx? Все сильно зависит от задачи, но я считаю что власть в один контейнер больше одного приложения нормально.
06:15:58 ПП
User 141975931
Класть*
06:16:22 ПП
User 342142410
в моем случае я хочу запустить один контейнер с nginx, который раздавал бы файлы со всех этих 30-40 контейнеров
06:16:51 ПП
User 342142410
php-fpm не юзаю
06:17:37 ПП
User 141975931
Через volumes выглядит как то костыльно имхо
06:18:03 ПП
User 141975931
В таком случае я бы лучше раздавал эти файлы по сети
06:18:29 ПП
User 141975931
Особенно если это не динамические данные, а какие либо данные приезжающие с образом
06:19:21 ПП
User 342142410
ну да, это статические файлы
06:19:21 ПП
User 141975931
Мы статику раздаем именно таким образом, не смотря что на фронте еще один nginx. Просто это удобно и не добавляет overhead
06:19:38 ПП
User 342142410
не понял немножко, мне в таком случае что нужно делать?
06:19:39 ПП
User 141975931
Статика тем более имеет свойство кэшироваться
06:20:18 ПП
User 141975931
Может есть смысл собрать эту статику в кучу, а не пилить 30-40 контейнеров?
06:21:03 ПП
User 141975931
Мы раньше тоже ходили этим путем. Потом замучались выкатывать и отлаживать код
06:21:40 ПП
User 342142410
не могу, это архитектурное решение, image создают юзеры
06:21:58 ПП
User 342142410
это облачный хостинг-сервис приложений
06:22:06 ПП
User 342142410
а точнее игровых серверов)
06:23:32 ПП
User 141975931
Соберите разные конфигурации, погоняйте тесты
06:24:38 ПП
User 141975931
В том чтобы положить 30 веб серверов на хост тоже ничего страшного нет. В случае докер у нас разделяемая память и все они будут кушать мало накладных ресурсов.
06:25:12 ПП
User 342142410
я понимаю, но меня не радует то, что в коннтейнерах по два процесса работают
06:25:23 ПП
User 342142410
у меня много моментов от этого зависят
06:26:16 ПП
User 141975931
Зайдите в контейнер через exec bash напишите ps aux и зачастую там будет больше одного процесса помимо баш
06:26:26 ПП
User 141975931
Зависит от образа
06:26:44 ПП
User 141975931
Мы supervisord в образа пихаем
06:26:47 ПП
User 141975931
Мониторинг
06:26:50 ПП
User 141975931
Логирование
06:26:55 ПП
User 141975931
Дискавери
06:27:06 ПП
User 141975931
И многие делают также
06:27:12 ПП
User 342142410
у меня во всех контейнерах один процесс
06:27:25 ПП
06:27:34 ПП
User 141975931
Это что-то разве ломает?
06:27:47 ПП
User 342142410
User 141975931
Зайдите в контейнер через exec bash напишите ps aux и зачастую там будет больше одного процесса помимо баш
это в ответ на это
06:27:49 ПП
User 141975931
Только психологический барьер?
06:27:56 ПП
User 342142410
Денис, вы общаетесь как уебан
06:28:00 ПП
User 342142410
прекращайте =)
06:28:25 ПП
User 141975931
У меня докер в продакшене 2.5 года
06:28:34 ПП
User 342142410
а у меня 3
06:28:37 ПП
User 141975931
Я наелся уже всего с ним
06:28:53 ПП
User 342142410
я тоже
06:29:03 ПП
User 342142410
меня интересовал вопрос шаринга данных
06:29:21 ПП
User 342142410
и, возможно, не только nginx захочет в будущем эти данные хавать
06:29:31 ПП
User 141975931
Я вам попытался помочь. А в ответ мат)
06:29:39 ПП
User 342142410
ладно, пойду погуглю
06:29:42 ПП
User 342142410
спасибо за помощь)
07:31:33 ПП
User 125133172
ребят как получить доступ к файлу внутри volume из node-приложения? подскажите хоть как гуглить правильно
07:32:02 ПП
User 117201680
Так, стоит пробовать заводить композ с питоном, монгой и энджинксом на 512 мб памяти или лучше не напрягаться?
07:35:35 ПП
User 125133172
наверное я задаю глупые вопросы, но больше не знаю у кого спросить
07:36:27 ПП
User 125133172
пойду в node.js спрошу..
07:37:39 ПП
User 117201680
User 125133172
ребят как получить доступ к файлу внутри volume из node-приложения? подскажите хоть как гуглить правильно
Так а volume не маунтится как простая директория в контейнере?
07:38:56 ПП
User 117201680
У меня красивый /tmp вольюм с сокетами например, туда монга, питон и uwsgi ходят.
07:40:01 ПП
User 125133172
это метеор приложение, которое деплоится через тулзу meteor up, там в конфиге пишу 

volumes: {
      "/home/photos": "/home/photos", // passed as '-v /home/photos:/home/photos' to the docker run command
    },

не знаю как проверить. Пробовал запросить файл прям из браузера http://myhost/home/photos/file.png, ничего не отдало
07:40:29 ПП
User 125133172
вот как проверить не знаю точно, как оно маунтится
07:41:43 ПП
User 125133172
мне надо как-то ссылку на файл записать в монго, чтобы потом на фронте использовать
07:42:19 ПП
User 117201680
User 125133172
мне надо как-то ссылку на файл записать в монго, чтобы потом на фронте использовать
Так то, что оно в контейнере лежит в /home/photos нихрена не значит что оно в браузере там же лежит.
07:42:46 ПП
User 117201680
Если у тебя рут вебсервера в / (что я не рекомендую), то возможно оно будет работать.
07:42:46 ПП
User 125133172
надо через nginx как-то шерить?
07:43:04 ПП
User 125133172
User 117201680
Если у тебя рут вебсервера в / (что я не рекомендую), то возможно оно будет работать.
неа, рут другой вроде
07:43:21 ПП
07:43:31 ПП
User 125133172
server это мое приложение
07:46:27 ПП
User 117201680
User 125133172
надо через nginx как-то шерить?
Нет. Надо завести энджинкс как реверс прокси для твоего сервера, а потом твой server должен отдавать энджинксу эти картинки. Я бы поднял rest api в server.

Такая же концепция, как flask + nginx. Flask пекеджится в uwsgi сервер, который через сокет общается с энджинксом. Все красиво.
07:46:50 ПП
User 117201680
При условии, что энджинкс тебе вообще нужен.
07:47:24 ПП
User 117201680
Если нет, просто подними рест на ноде и отдавай обратно картинку, которую ты достаешь в коде из файла на сервере.
07:47:54 ПП
User 125133172
ага понял, для реста нгинкс мне не нужен, в принципе..
07:48:28 ПП
User 125133172
получается, мне нужно сделать просто через fs.createReadStream() доступ к файлам?
07:49:00 ПП
User 117201680
User 125133172
ага понял, для реста нгинкс мне не нужен, в принципе..
Он тебе нужен если у тебя продакшн и тебе нужна функциональность например всякие ссл хитрые редиректы реверс прокси и тп. Если доморощенный проект - нафиг.
07:49:07 ПП
User 117201680
User 125133172
получается, мне нужно сделать просто через fs.createReadStream() доступ к файлам?
Я не пишу на ноде :)
07:49:37 ПП
User 125133172
а ок ) немного прояснилось в любом случае, спасибо )) пошел ковырять