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

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

2608 members

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

07:05:56 ДП
User 61193397
User 117201680
Так, стоит пробовать заводить композ с питоном, монгой и энджинксом на 512 мб памяти или лучше не напрягаться?
Однозначно не стоит. Памяти мало.
07:07:28 ДП
User 106955548
User 117201680
Так, стоит пробовать заводить композ с питоном, монгой и энджинксом на 512 мб памяти или лучше не напрягаться?
А что за железо?
07:25:42 ДП
User 117201680
User 106955548
А что за железо?
Digital Ocean
07:57:08 ДП
User 44568525
Всем привет!
Кто сталкивался со статикой для докера? Помогите с выбором решения.
Что имеем:
1. SPA-приложение, которое собирается npm и складывается в папку dist
2. API-приложение с php-fpm упакованное в контейнер
3. nginx который зависит от api-приложения

Проблема:
Статика, по сути, ничего не исполняет, оборачивать её в контейнер сомнительно. Но весьма удобно обернуть её в контейнер с nginx и выкачать с registry (билд выполняет CI), чтобы запустилось и работало без танцев с бубном. Имея один nginx со статикой, возникает вопрос о том, что делать со вторым nginx-ом, который настроен под API.

Решение:
1. Поставить rsync на CI-сервер, замаунтить папку с собранной статикой на прод. сервер где файлы уже подцепит основной nginx.
2. Проксировать с одного nginx на другой.

...может есть best practice какой?
08:01:18 ДП
User 35992469
а зачем второй nginx вообще? почему сразу не лезть в php-fpm с первого nginx?
08:04:28 ДП
User 197902193
обычно применяют data-only контейнеры в таком случае, которые маунтятся куда нужно через —volumes-from
08:12:30 ДП
User 44568525
User 4627228
🔵 В группе есть традиция - представляться при входе:

▫️Какой у вас проект или где работаете?
▫️В чём вы специалист?
▫️Чем можете быть интересны или полезны сообществу?
▫️Чем интересно сообщество вам?
▫️Откуда вы?
▫️Как узнали про группу?
В сообщении нужно указать тэг #whois

🔵 Правила чата: 

🚫 Публикация вакансий запрещена
🚫 Реклама запрещена
🚫 Политика запрещена
🚫 Флуд и непрофессиональное поведение запрещено

За несоблюдение правил - одно предупреждение, далее следует бан.

Вакансии и запросы на поиск работы публикуем в группе @devops_jobs. Формат любой: full-time, part-time, remote и разовые подработки. Также обмениваемся инсайдами и аналитикой по рынку труда.

Здесь общаемся на темы, посвященные Docker, Docker Swarm и всей экосистеме. Задаем вопросы, решаем проблемы и обмениваемся новостями.

Параллельно с этой группой развивается:
🔸@kubernetes_ru - посвященная Kubernetes (он же K8s), его конфигурации и обновлению. Задаём вопросы, обсуждаем идеи, решаем проблемы, делимся новостями и т.д.
🔸@devops_ru - активно общаемся на темы, посвященные DevOps, Docker, Mesos, DC/OS, CoreOS, Clouds и т.д.

📡 Возможно, вам также будут интересны группы: @nodejs_ru, @react_js, @angular_js, @javascript_jobs, @reactnative_ru, @ios_ru, @android_ru, @mobile_jobs. Приятного общения!
#whois #roquie

1. Туристические услуги, поиск, бронирование, выписка авиа/жд/отелей. Эквайринг. Работаю в Travel Management consulting.
2. Full stack разработчик web-приложений.  PHP, Laravel, Postgres, Vuejs, Unix, CI/CD-integration.
3. Докер использую на продакшене и для dev-разработки, по многим обычным вопросам смогу ответить.
4. Узнать что-то новое, задавать вопросы где происходит тупняк или вдруг разыгралось чувство прекрасного :)
5. Москва.
6. Был тут месяца 3-4 назад. А до этого гуглил.
08:32:12 ДП
User 83727179
User 197902193
обычно применяют data-only контейнеры в таком случае, которые маунтятся куда нужно через —volumes-from
не рекомендуют ведь data-only контейнеры, рекомендуют использовать volume
08:32:22 ДП
User 83727179
а вообще для чего это?
08:32:34 ДП
User 83727179
я просто монтирую папку через -v
08:34:23 ДП
User 197902193
не буду спрашивать, где вы видели такие рекомендации. Смысл мною сказанного в том, что если нужно использовать одну и ту же информацию в разных контейнерах хорошим решением является создать data-only контейнер, в нем сделать Volume и этот самый volume использовать в обоих контейнерах
08:34:53 ДП
User 197902193
мы так делаем для проброса сгенеренной статики из контейнера с фронтом в nginx
08:35:55 ДП
User 197902193
и это не противоречит вашей практике, а дополняет ее. Или нет.
08:39:56 ДП
User 114941324
User 197902193
не буду спрашивать, где вы видели такие рекомендации. Смысл мною сказанного в том, что если нужно использовать одну и ту же информацию в разных контейнерах хорошим решением является создать data-only контейнер, в нем сделать Volume и этот самый volume использовать в обоих контейнерах
Зачем лишний контейнер?
08:40:48 ДП
User 114941324
К тому же, хранить в контейнере данные - весьма и весьма опасно.
08:41:15 ДП
User 197902193
речь не идет о хранении данных в контейнере.
08:42:08 ДП
User 197902193
и обычно data-only делают FROM tianon/true, который занимает несколько байт. И там нет вообще ничего. Только том, накотором хранятся данные, и его можно пробросить на хост, и/или в другие контейнеры
08:43:01 ДП
User 66989667
а чем это лучше одной директории которая замонтирована на оба контейнера?
08:43:23 ДП
User 197902193
это как?
08:43:31 ДП
User 66989667
через -v
08:44:27 ДП
User 66989667
когда с хоста на оба контейнера монтируем одну и ту же директорию и данные никуда не пропадут и доступна с обоих контейнеров
08:44:56 ДП
User 197902193
дело в том, что докер оперирует понятием volume для хранения данных
08:45:35 ДП
User 197902193
когда вы говорите "папка" и -v, вы имеете в виду то, что докер положит вольюм не к себе в /var/lib/docker, а в указанное место.
08:46:19 ДП
User 197902193
когда вы делаете -v той же папки в другой контейнер, вероятно, происходит то же что я говорю. Простоэто не очень  хорошо с точки зрения архитектуры. Потому, что вы не можете наверняка сказать, к какому из двух контейнеров прикреплен этот вольюм, пока не посмотрите docker inspect
08:47:21 ДП
User 197902193
а основной плюс отдельного контейнера в том, что в соответствии с философией докера, вы можете без всяких заморочек полностью дропать любой из контейнеров без данных
08:47:58 ДП
User 197902193
то есть контейнер с nginx и npm гораздо удобнее обновлять, и вообще стартовать можно сразу с —rm
08:48:14 ДП
User 66989667
так в случаем замонтированного volume с хоста, так же можно дропать любой контейнера и директория замаунченная никуда не денется
08:48:46 ДП
User 66989667
т.к. замонтированные волюмы не очищаются при удалении контейнера
08:49:39 ДП
User 197902193
это верно. А рано или поздно наступает ситуация, когда на хосте заканчивается место, и мы начинаем его чистить с помощью всяких скриптов (говорят в 17.03 появилась чистилка внутри)
08:50:05 ДП
User 197902193
и тогда, когда мы запускаем очистку известными командами, удаляются и тома.
08:51:11 ДП
User 197902193
в общем, я говорю про архитектуру приложения. И считаю так делать удобнее.
08:52:42 ДП
User 66989667
ну на продакшене возможно, у нас маунты с хоста только на тест окружении, на проде через все через persistent volume кубернетеса.
08:53:13 ДП
User 66989667
т.к. там диск хоста ноды как раз очищается при каждом обновлении
08:53:19 ДП
08:55:11 ДП
User 197902193
в aws так же.
08:55:36 ДП
User 197902193
смысл же в том, что volume скалдываются на Presistent volume?
08:56:12 ДП
User 197902193
в общем, тут нет универсального рецепта. Каждый видит архитектуру по своему.
08:56:29 ДП
User 66989667
ну у нас persistent volume это экспорты с nfs-сервера
09:08:27 ДП
User 183627422
Ребят привет
09:08:29 ДП
User 183627422
подскажите
09:08:46 ДП
User 183627422
собираю образ из убунты, ставлю пакет bash-completion
09:08:54 ДП
User 183627422
но tab не работает внутри контейнера
09:08:57 ДП
09:09:02 ДП
User 183627422
почему так7
09:20:39 ДП
User 66989667
а в контейнер каким образом попадаешь?
09:20:43 ДП
User 66989667
по ssh или exec?
09:45:35 ДП
User 118217463
User 197902193
не буду спрашивать, где вы видели такие рекомендации. Смысл мною сказанного в том, что если нужно использовать одну и ту же информацию в разных контейнерах хорошим решением является создать data-only контейнер, в нем сделать Volume и этот самый volume использовать в обоих контейнерах
https://github.com/docker/docker/issues/17798
github.com/docker/docker/issues/17798
This is a question regarding best-practice, not sure this is the right place to ask but here it goes anyway: So in docker 1.9.0 we can create named volumes. This means I could create a container wi...
09:49:09 ДП
User 118217463
и в продолжение http://stackoverflow.com/questions/36011595/docker-named-volumes-vs-doc-data-only-containers
stackoverflow.com/questions/36011595/docker-named-volumes-vs-doc-data-only-containers
Up to recent version of Docker (v1.10), we were thought that we can use DOC: data-only containers. So I would create such DOC (based on e.g. busybox) and use --volumes-from to link it to my contain...
09:51:39 ДП
User 199194369
официальная документация докера до сих пор указывает на дата-онли контейнерс
10:02:41 ДП
10:04:59 ДП
User 118217463
Вот это? https://docs.docker.com/engine/tutorials/dockervolumes/#creating-and-mounting-a-data-volume-container
docs.docker.com/engine/admin/volumes/volumes
Using volumes
10:06:13 ДП
User 131557100
подскажите пожалуйста, почему я устанавливаю докер у меня версия 17.03, смотрю какие-то доки там требуется 1.2,
10:06:33 ДП
User 131557100
что с версиями не так?) откуда такая пропасть между 1.2 и 17.03 ?)
10:06:38 ДП
User 131557100
а еще вроде 18 есть
10:06:45 ДП
User 56121515
Новая нумерация версий
10:06:52 ДП
User 118217463
Не успели доки обновить, они только неделю назад сменили версионирование 17 год 3 месяц
10:14:06 ДП
User 131557100
спасибо)
10:22:29 ДП
User 46399435
User 183627422
но tab не работает внутри контейнера
TERM=xterm-256  ?
10:23:11 ДП
User 183627422
решил путем раскомментирования строк в bash.bashrc
12:27:01 ПП
User 197902193
User 118217463
Вот это? https://docs.docker.com/engine/tutorials/dockervolumes/#creating-and-mounting-a-data-volume-container
docs.docker.com/engine/admin/volumes/volumes
Using volumes
плюсую. Это официальный best-practice
05:04:56 ПП
User 23993472
Парни, вангую что такое уже сто раз обсуждали, но все таки - скажите, как лучше всего прокинуть ssh ключ в контейнер, да еще если ключ с паролем
05:06:41 ПП
User 23993472
Заводить специальный ключ без пароля как то не очень нравится идея
05:12:57 ПП
User 114941324
Есть Rocker
05:13:04 ПП
User 114941324
В котором есть mount
05:13:22 ПП
User 114941324
И можно при сборке интерактивы устраивать
05:28:01 ПП
User 197902193
в докер ЕЕ вроде сделали какое-то решение для этого?
05:30:25 ПП
User 23993472
Подмонтировать ключ не проблема, а вот ssh-add неинтерактивно что-то не выходит
06:35:02 ПП
User 44568525
Черт побери! Телеграм глюкнул, не получал уведомлений! Пока из обсуждения, все сводится к варианту с data-only контейнерами, да и с ними проще осуществлять сборку и доставку на прод через registry…
06:35:49 ПП
User 197902193
и описывать инфраструктуру будет проще
06:38:35 ПП
User 61193397
User 23993472
Парни, вангую что такое уже сто раз обсуждали, но все таки - скажите, как лучше всего прокинуть ssh ключ в контейнер, да еще если ключ с паролем
Использовать Docker secrets: http://avmaksimov.ru/2017/02/14/docker-secrets-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D0%B5-%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5-%D0%B4%D0%BB%D1%8F-%D1%87%D1%83%D0%B2%D1%81%D1%82%D0%B2%D0%B8%D1%82/
avmaksimov.ru/2017/02/14/docker-secrets-безопасное-хранилище-для-чувствит
В данной статье рассмотрены Docker secrets, предназначенные для работы с чувствительными данными ваших приложений (ключи, пароли и т.д). + пример приложения
06:41:09 ПП
User 61193397
User 23993472
Парни, вангую что такое уже сто раз обсуждали, но все таки - скажите, как лучше всего прокинуть ssh ключ в контейнер, да еще если ключ с паролем
Там же в блоге есть пример использования с композом, если нужно
06:51:42 ПП
User 23993472
Да, но как это поможет мне с ключами, у которых есть пароль?)
06:52:42 ПП
User 23993472
сам ключ прокинуть в принципы проблемы нет, проблема возникает, когда надо сделать bundle install (npm/go get и тд) из приватного репозитория
06:52:49 ПП
User 23993472
а у ключа пароль
06:59:25 ПП
User 197902193
если нет возможности ввести этот пароль интерактивно, то есть ли в этом пароле вообще смысл?
07:00:06 ПП
User 197902193
его все-равно придется как-то или через что-то передавать.
07:00:57 ПП
User 23993472
тоже верно, просто тревожно на душе, что ключ с доступом на чтение ко внутренним проектам будет лежать без пароля
07:01:10 ПП
User 23993472
если например сделать просто отдельный ключ под контейнер
07:02:03 ПП
User 197902193
а что мешает добавлять чувствительные данные в CI системе?
07:03:03 ПП
User 23993472
ну вообще сейчас цель была переехать с вагранта на докер в разработке, пока даже не ci
07:03:08 ПП
User 197902193
любая CI умеет защищенно хранить креденшиалы. Взяли базовый образ, сделали сборку, выложили в приватный реп.
07:03:24 ПП
User 23993472
отсюда кейс, что у разных разработчиков разные ключи
07:03:37 ПП
User 23993472
но тк ssh форвардинг докер не умеет
07:03:44 ПП
User 197902193
а как насчет использования deveploment_keys?
07:04:00 ПП
User 197902193
которые привязываются к репе и используются для получения кода?
07:04:52 ПП
User 197902193
там есть какой-то очень жесткий и небезопасный бубен, как можно это сделать... я около года назад гуглил про это, но уже не вспомню как.
07:06:07 ПП
User 197902193
потом я пытался ключ шифровать base64+tar.gz, передавать в переменную окружения, и удалять эту переменную, после восстановления ключа.
07:06:17 ПП
User 23993472
что за development keys? ключи разработчиков?
07:06:20 ПП
User 197902193
а потом просто сделали CI и все это ушло вникуда
07:06:34 ПП
User 197902193
да. К каждому гит репозиторию можно привязать ключ только для чтения.
07:06:42 ПП
User 197902193
он называется development_key
07:07:04 ПП
User 197902193
это позволяет не создавть отдельного пользователя для CI системы в репе
07:08:21 ПП
User 114941324
Контейнер же будет только у разработчиков? Просто делайте ротацию ключа периодически
07:08:21 ПП
User 114941324
тоже верно, просто тревожно на душе, что ключ с доступом на чтение ко внутренним проектам будет лежать без пароля
07:11:12 ПП
User 23993472
ну как вариант можно хранить ключ где-то а в докерфайле забирать его wget-ом
07:11:16 ПП
User 23993472
а ключ действительно ротировать
07:12:46 ПП
User 23993472
короче я не понимаю, почему они не хотят сделать ssh forwarding
07:13:01 ПП
User 23993472
там тикет на гитхабе уже пару лет висит и куча народу просит это
07:30:08 ПП
User 13688461
Привет.
Подскажите как правильно заэкстендить докерфайл, при условии что собирается все через докер-композ
Я хочу сделать три докерфайла: php-base, от него php-fpm и php-cli
В композ два сервиса соответственно, php-fpm (бекенд) и php-cli (демон исполняющий скриптовые задачи)
В докерфайле в FROM надо указывать имя image, но как мне объяснить композу что надо собрать этот image php-base, если для него нет сервиса?
07:32:30 ПП
User 199194369
Одна из практик - использование переменных окружения
07:33:41 ПП
User 199194369
Указываешь папку
07:34:06 ПП
User 199194369
image: ./docker/phpoo
08:07:18 ПП
User 13688461
то есть в image: можно указать докерфайл?
08:10:15 ПП
User 13688461
Еще вопрос в догонку: мне нужно, в зависимости от окружения, опционально подлючать volume и открывать некоторые порты. Я знаю что можно сделать два файла и запускать типа docker-compose -f base.yml -f dev.yml, но нельзя ли в одном конфиге, в зависимости от переменных окружения, исключать директивы volume и ports?
08:11:35 ПП
User 13688461
User 199194369
image: ./docker/phpoo
стоп, нет, так мне же нужно не в compose.yml прописывать базовый образ, а в докерфайле
08:29:32 ПП
User 199194369
From в докерфайле
08:29:50 ПП
User 199194369
Но если он кастомный, то надо пушить на хаб
08:56:48 ПП
User 61193397
User 23993472
сам ключ прокинуть в принципы проблемы нет, проблема возникает, когда надо сделать bundle install (npm/go get и тд) из приватного репозитория
http://stackoverflow.com/a/36631910
stackoverflow.com/questions/36630516/using-expect-command-to-pass-password-to-ssh-running-script-remotely/36631910
I need to create a bash script that will remotely run another script on a batch of machines. To do so I am passing a script through SSH. ssh -p$port root@$ip 'bash -s' < /path/to/script/test.s...
08:56:57 ПП
User 61193397
Сорри, что поздно
09:02:39 ПП
User 61193397
User 13688461
Еще вопрос в догонку: мне нужно, в зависимости от окружения, опционально подлючать volume и открывать некоторые порты. Я знаю что можно сделать два файла и запускать типа docker-compose -f base.yml -f dev.yml, но нельзя ли в одном конфиге, в зависимости от переменных окружения, исключать директивы volume и ports?
Практика не очень: окружение должно быть максимально приближено к проду.  С вашим подходом можно граблей много ловить и держать в голове разницу между окружениями всегда надо. Не удобно. Есть возможность что-то с этим сделать, чтобы не городить кучу ифов?
09:03:25 ПП
User 24306243
---
есть ansible, есть docker.
меня интересует такой момент, как правильно версионировать с помощью docker версии, чтоб потом можно было откатиться.
А так же, как потом при помощи инструмента Ansible, мне вытащить нужную мне версию? Не ужели после каждого deploy, мне придется менять конфиги в ansible?
---
на данный момент я просто всегда тяну latest, для всоего приложения и все.
09:04:06 ПП
User 13688461
User 61193397
Практика не очень: окружение должно быть максимально приближено к проду.  С вашим подходом можно граблей много ловить и держать в голове разницу между окружениями всегда надо. Не удобно. Есть возможность что-то с этим сделать, чтобы не городить кучу ифов?
Вопрос — можно или нет. Если можно, то как.
09:04:56 ПП
User 61193397
User 24306243
---
есть ansible, есть docker.
меня интересует такой момент, как правильно версионировать с помощью docker версии, чтоб потом можно было откатиться.
А так же, как потом при помощи инструмента Ansible, мне вытащить нужную мне версию? Не ужели после каждого deploy, мне придется менять конфиги в ansible?
---
на данный момент я просто всегда тяну latest, для всоего приложения и все.
https://12factor.net/ru/ - 30 минут на чтение и вы найдете ответы на все свои вопросы.
12factor.net/ru
A methodology for building modern, scalable, maintainable software-as-a-service apps.
09:05:46 ПП
User 61193397
User 13688461
Вопрос — можно или нет. Если можно, то как.
Нет, нельзя.
09:08:34 ПП
User 13688461
User 61193397
Нет, нельзя.
Спасибо