Aleksey
Server: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 60ccb22 Built: Thu Feb 23 10:53:29 2017 OS/Arch: linux/amd64 Experimental: false
Aleksey
я зачем то подумал что все это уже видели
Evgeny
парни а что означает в Version: 17.03.0-ce букавки ce ?
Опа, и ко мне пришло. Пробовал уже?
Aleksey
ну я новых хост для поиграться щас разворачивал
Aleksey
пробовать не провал
Aleksey
но два имиджа в нем работают
Evgeny
о! @dd_bb - не твой ли баг пофикшен? Fix side effect panic in overlay encryption and network control plane communication failure ("No installed keys could decrypt the message") on frequent swarm leader re-election #25608
yopp
Нет :)
Alexey
Всем добра. Нубский вопрос: как в entrypoint можно получить значение, которое передаётся в —user или user (docker-compose.yml)?
nikita
Всем добра. Нубский вопрос: как в entrypoint можно получить значение, которое передаётся в —user или user (docker-compose.yml)?
как переменную окружения скорее всего https://docs.docker.com/engine/reference/builder/#/arg https://docs.docker.com/engine/reference/run/#/env-environment-variables
Alexey
Это немного не то, по-моему. Тут речь не о кастомном аргументе идёт, а о встроенном в Docker. Вот в Dockerfile есть директива USER. Меня интересует как можно её внутри контейнера получить.
Alexey
По логике, она должна бы быть доступна, т.к. разработчик вполне может хотеть что-то сделать с упоминанием пользователя.
Alexey
Ну или опишу конкретно мой кейс. Возможно, я решаю его неправильно. Есть официальный образ postgres. Нужно чтобы volume /data/db на хостовой машине создавался с правами пользователя, который указан в конфиге docker-compose.yml (а туда передаётся переменная среды UID).
Alexey
В README образа уже есть два варианта: 1. Подмонтировать /etc/passwd 2. Между инициализацией данных и запуском БД сделать chown с нужным пользователем. Я вижу второй вариант более правильным, но не совсем понимаю, как его правильно сделать.
Eugene
Юзайте userns-remap
Alexey
А можно поподробнее или ссылочку?
Eugene
https://blog.yadutaf.fr/2016/04/14/docker-for-your-users-introducing-user-namespace/
Eugene
вкратце- в контейнере файлы создаются под рутом, на хосте под заремапленным пользователем
Alexey
В контейнере файлы не под рутом создаются. Кстати, в каждом контейнере - под своим пользователем. У меня связка контейнеров же через docker-compose. Ну и как-то это не очень переносимо, по идее. Это же опция демона. То есть, каждому, кто захочет запустить приложение в докере нужно будет у себя параметры запуска демона твикать?
Alexey
Мне бы как-то хотелось добиться того, что человек стянул к себе проект из Git, набрал docker compose up и получил работающий стек из коробки. Чтобы и файлы были доступны его пользователю.
Toly
А почему так важно монтировать данные в fs? Мы от такой схемы на named volumes переходим. Слишком много геморроя, особенно для виндузятников (есть и такие, да)
Alexey
Например, с образом mongo это работает из коробки. Там монга запускается через gosu и всё ок. С Postgres - сложнее, т.к. там ещё initdb работает сначала под пользователем postgres, а дальше можно под чем угодно базу гонять.
Alexey
А почему так важно монтировать данные в fs? Мы от такой схемы на named volumes переходим. Слишком много геморроя, особенно для виндузятников (есть и такие, да)
Чтобы можно было сохранять данные даже при удалении контейнера и его пересборке потом. Плюс чтобы иметь возможность к ним напрямую доступ получить.
Alexey
Кстати, виндузятников тут не будет, так что это не проблема.
Alexey
Но вообще вопрос с named volumes - посмотрю. Тем более, они всё равно рекомендуются в третьей версии compose.
Toly
Чтобы можно было сохранять данные даже при удалении контейнера и его пересборке потом. Плюс чтобы иметь возможность к ним напрямую доступ получить.
Первую проблему named volumes решает. Вторую с костылями, но для нас это не так важно. Важно уметь дропнуть данные и уметь осознать их наличие
Aleksey
ведь после ее установки пользователь в контейнре будет тот котороый в ней указан
Alexey
ведь после ее установки пользователь в контейнре будет тот котороый в ней указан
Не совсем понял, о чём идёт речь, если это был мне ответ (а формально он был не мне).
Aleksey
да вам
Aleksey
id команда такая
Aleksey
или whoami
Alexey
Гм, а чем она мне поможет? Она возвращает текущего пользователя. А мне нужно будучи уже внутри Docker сделать chown с желаемым UID пользователя, который будет передан докеру от docker-compose.
Evgeny
чот вы не понимаете
Alexey
В принципе, мне ничто не мешает завести переменную среды, но мне кажется, что должно быть возможно работать с тем, что передано в --user и тогда переменная среды - костыль.
Evgeny
Либо фиксируйте и синхронизируйите ID, либо любой другой костыль на ваш выбор
Alexey
Поясните 'фиксировать и синхронизировать ID'? Это очень абстрактно звучит.
Alexey
Костыль я придумать могу без проблем (та же переменная среды новая), но мне кажется, что он не нужен. Но я пока не нашёл в документации информации об этом.
Alf 🙀
Костыль я придумать могу без проблем (та же переменная среды новая), но мне кажется, что он не нужен. Но я пока не нашёл в документации информации об этом.
Ну опция --user это опция которая говорит доккер контейнеру какой пользователь будет внутри так? Из линуксового шелла текущего пользователя можно получить через вызов команды id или whoami
Alexey
Но для этого пользователь должен существовать в контейнере, чтобы шелл запущенный под ним вернул по id или whoami его ID. В общем-то, вопрос в том, как этого пользователя создать для начала :)
Alexey
Хм.
Alf 🙀
Пихайте в него числами написанов документашке
Alexey
Странно. Я и так пихал в постгресовский контейнер UID. Интересно, что с ним не так тогда.
Alf 🙀
Странно. Я и так пихал в постгресовский контейнер UID. Интересно, что с ним не так тогда.
Может вы пихали уид который уже присутствовал в контейнере?
Alexey
Не. Там для постгреса создаавался 999, я 1000 пихал.
Evgeny
Гайз, слушайте, я не то чтобы уверен что это правильный чат для подобного вопроса, но я попробую. У меня тут микросервисная аритектура во все поля, около 30 микросервисов, под каждый 3-10 (а дальше и больше) инстансов в докере. Далее я буду говорить о NodeJS части. Я хочу как-то вменяемо логгировать для каждого входящего запроса карту подзапросов. Мне это видится как добавление в глобал-прокси в каждый входящий запрос уникального ID для трекинга, который потом будет так-же добавляться во все подзапросы. В процессе логгирования думаю писать JSON с несколькими параметрами - уровень логгирования, конкретный инстанс, id подзапроса, и тд. Ну и теперь вопрос - кто-то знает что-то готовое, похожее на то что я описываю, что умеет собирать и аггрегировать эти логи и, что куда сложнее - выводить их в аггрегированном виде чтобы я мог видеть для каждого запроса все связанные подзапросы? В идеале конечно уметь показывать аггрегированные логи не только по подзапросам, но и по всем остальным полям
Alf 🙀
Traefik?
Aleksey
Гайз, слушайте, я не то чтобы уверен что это правильный чат для подобного вопроса, но я попробую. У меня тут микросервисная аритектура во все поля, около 30 микросервисов, под каждый 3-10 (а дальше и больше) инстансов в докере. Далее я буду говорить о NodeJS части. Я хочу как-то вменяемо логгировать для каждого входящего запроса карту подзапросов. Мне это видится как добавление в глобал-прокси в каждый входящий запрос уникального ID для трекинга, который потом будет так-же добавляться во все подзапросы. В процессе логгирования думаю писать JSON с несколькими параметрами - уровень логгирования, конкретный инстанс, id подзапроса, и тд. Ну и теперь вопрос - кто-то знает что-то готовое, похожее на то что я описываю, что умеет собирать и аггрегировать эти логи и, что куда сложнее - выводить их в аггрегированном виде чтобы я мог видеть для каждого запроса все связанные подзапросы? В идеале конечно уметь показывать аггрегированные логи не только по подзапросам, но и по всем остальным полям
http://opentracing.io/
Evgeny
Traefik?
Не, вообще не то.
Alf 🙀
Не, вообще не то.
Да не дочитал
Evgeny
Мне именно для аггрегирования логов нужно
Aleksey
ну вот моя ссылка про то
Evgeny
Да, смотрю
Aleksey
на хайлоаде кто то расказывал
Aleksey
там и мордочки были для всего этого хозяйства
Evgeny
Про опентрейсинг?
Aleksey
да
Aleksey
и про то как они решали задачу которую ты описал
Aleksey
хороший был доклад
Evgeny
Не помнишь ссылку? Не моуг пока найти
Aleksey
не помню
Aleksey
тоже глянул
Aleksey
нифига не ищется
Aleksey
http://www.highload.ru/2016/abstracts/2302.html
Aleksey
интересненько
Aleksey
оу https://github.com/Netflix/Hystrix
Aleksey
оу https://github.com/openzipkin/zipkin трассировка внутри приложения
Aleksey
умеет гененрировать traceid
Aleksey
либа https://github.com/opentracing/opentracing-python
Aleksey
можно добавить traceid в логи
Aleksey
вот заметки нашел по ходу выступления
Evgeny
Спасибо добрый человек!
Evgeny
Да, попробую опентрейсинг, выгляжит очень норм. Кто-то его использовал? Может поделиться опытом или подводными камнями?
Lex
https://blog.docker.com/2017/03/docker-enterprise-edition/
Lex
уже обсосали?
nvkv
обоссали, ты хотел сказать?
Dan
Docker EE в проде уже неделю гоняем. пока всё ровно очень
nvkv
Я правильно понял, что теперь будут LTS релизы?
nvkv
НАКОНЕЦ-ТО