@ru_docker

Страница 298 из 610
Никита
01.03.2017
14:32:00
Привет! Есть такой вопрос: раньше был сервер, на который деплоились 5 докер-контейнеров с --network=host. все они нужны для приложения и общаются между собой нужно деплоить несколько таких приложений на сервер (разные ветки того же приложения с гитхаба) я создаю network с названием ветки при запуске контейнеров указываю в —network название этой сети на самой машине у меня стоит nginx, которым я хочу разрулить запросы к разным приложениям где мне взять ip сети, чтобы я по нему смог достучатсья по разным портам к разным контейнерам? nginx conf template: upstream u1 { server {{ branch_ip }}:7000; } upstream u2 { server {{ branch_ip }}:7010; } upstream u3 { server {{ branch_ip }}:7080; } upstream u4 { server {{ branch_ip }}:7082; } docker network inspect: "Name": "test1", "Id": "539a01316874c86c32c234d430a1c057a46f01846948552527c3f609d443bb77", "Created": "2017-03-01T14:21:06.410200207Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": false, "Containers": { "07718eff31f71c6d250ad9ecb5fb2c24e8a857a112b05a2d76a495d2430df244": { "Name": "test1-rsyslog", "EndpointID": "b471b66ef04ab3a02d809b723569a84c2a6d41230a9efbb796cafce5efab5296", "MacAddress": "02:42:ac:13:00:03", "IPv4Address": "172.19.0.3/16", "IPv6Address": "" }, ......

upd: я понимаю, что могу узнавать ip каждого контейнера из его eth0 и про docker swarm читал, но показалось, что для одного хоста можно обойтись без него (могу быть неправ)

Anatoly
01.03.2017
14:58:08
любой k:v в который ты сможешь писать из приложения в доккере о его ip адрессе а потом читать из nginx тебе подойдет.

Google
Anatoly
01.03.2017
14:59:28
Тогда уж проще docker inspect
и руками переписывать каждый раз нгинкс конфиг под это дело? ну можно да

Evgeny
01.03.2017
14:59:58
Я себе под это сделал свой резолвер в докере, а нгинкс в него стучится

Короче - послушать бы топикстартера

Anatoly
01.03.2017
15:00:51
ну мне видится решение с резолвером самым адекватным путем, если честно

Никита
01.03.2017
15:32:17
ну не руками конечно, я настраиваю Ansible развертку... Думал про это все, но есть ощущение что есть проще способ, нативный Спасибо все равно, буду думать)

Evgeny
01.03.2017
15:33:14
Если всё в рамках одного хоста - можно снаружи биндиться на один IP

Anatoly
01.03.2017
15:35:35
ну не руками конечно, я настраиваю Ansible развертку... Думал про это все, но есть ощущение что есть проще способ, нативный Спасибо все равно, буду думать)
если у тебя выкатку делаешь через ансибл, то назначай сеть в анстбле для контейнера а потом через жинжу формируй конфиг нгинкса

Никита
01.03.2017
15:37:58
Ну да, но тут появляется заморочка с избежанием повторного bind на туже сеть Пока кажется что решений много но у всех свои костыли

Alex
01.03.2017
15:46:23
Народ, может кто подсказать, есть такой пример подключения nfs тома docker service create \ --mount 'type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=local,volume-opt=type=nfs,volume-opt=device=<nfs-server>:<nfs-path>,"volume-opt=o=addr=<nfs-address>,vers=4,soft,timeo=180,bg,tcp,rw"' --name myservice \ <IMAGE> https://docs.docker.com/engine/swarm/services/ Как эти параметры правильно транлировать в compose v.3

Alex
01.03.2017
16:07:23
в компоуз не завезли правильный сворм
так работает с 3й версией: docker deploy —compose-file docker-compose.yml blablabla тут пример есть http://blog.terranillius.com/post/composev3_swarm/

Ну в смысле, что docker-compose нет, но docker принимает чутка измененные файлы композа

Ivan
02.03.2017
05:53:45
А как бы мне передать переменную окружения в докер так, что бы использовать её внутри в nginx.conf. Я хочу параметр для listen передавать через -e при создании. Возможно это?

Google
Никита
02.03.2017
05:59:27
А как бы мне передать переменную окружения в докер так, что бы использовать её внутри в nginx.conf. Я хочу параметр для listen передавать через -e при создании. Возможно это?
если формируешь конфиг при сборе образа, ARG в докерфайле Если после запуска, передавай с флагом -e как переменную окружения

Ivan
02.03.2017
06:00:18
Да, мне после запуска. Вопрос наверное больше про nginx, может сталкивались, может ли он переменную юзать в своём конфиге

Ivan
02.03.2017
06:03:00
ну т.е. делаем обертку, и правим конфиг, так ведь?

run_ngix.sh типа?

Никита
02.03.2017
06:03:33
Тогда уж проще docker inspect
крутяк docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps | grep ${container_name} | awk '{print $1}')

Ivan
02.03.2017
06:04:21
Спасибо

Никита
02.03.2017
06:09:22
Спасибо
сам как раз сейчас чем-то похожим занимаюсь )

Semyon
02.03.2017
06:55:14
это в gettext такая пепяка есть

(кажется в gettext)

Ivan
02.03.2017
06:56:35
gettext пакет да:?

Semyon
02.03.2017
07:05:46
ага

Алексей
02.03.2017
09:48:01
парни а что означает в Version: 17.03.0-ce букавки ce ?

Aleksey
02.03.2017
09:49:52
ну обычно это community edition

Алексей
02.03.2017
09:50:02
да да

если это так

то где же не камунити :) ?

есть чо почитать ?

Google
Aleksey
02.03.2017
09:50:31
а что за приложение, это версия чего?

ну еще ee бывает ))

Алексей
02.03.2017
09:52:04
это новый докер так говорит

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

я зачем то подумал что все это уже видели

Evgeny
02.03.2017
10:47:56
парни а что означает в Version: 17.03.0-ce букавки ce ?
Опа, и ко мне пришло. Пробовал уже?

Алексей
02.03.2017
10:48:12
ну я новых хост для поиграться щас разворачивал

пробовать не провал

но два имиджа в нем работают

Evgeny
02.03.2017
10:49:40
о! @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
02.03.2017
11:27:55
Нет :)

Алексей
02.03.2017
13:29:53
Всем добра. Нубский вопрос: как в entrypoint можно получить значение, которое передаётся в —user или user (docker-compose.yml)?

Никита
02.03.2017
13:56:17
Всем добра. Нубский вопрос: как в entrypoint можно получить значение, которое передаётся в —user или user (docker-compose.yml)?
как переменную окружения скорее всего https://docs.docker.com/engine/reference/builder/#/arg https://docs.docker.com/engine/reference/run/#/env-environment-variables

Алексей
02.03.2017
14:01:07
Это немного не то, по-моему. Тут речь не о кастомном аргументе идёт, а о встроенном в Docker. Вот в Dockerfile есть директива USER. Меня интересует как можно её внутри контейнера получить.

По логике, она должна бы быть доступна, т.к. разработчик вполне может хотеть что-то сделать с упоминанием пользователя.

Ну или опишу конкретно мой кейс. Возможно, я решаю его неправильно. Есть официальный образ postgres. Нужно чтобы volume /data/db на хостовой машине создавался с правами пользователя, который указан в конфиге docker-compose.yml (а туда передаётся переменная среды UID).

В README образа уже есть два варианта: 1. Подмонтировать /etc/passwd 2. Между инициализацией данных и запуском БД сделать chown с нужным пользователем. Я вижу второй вариант более правильным, но не совсем понимаю, как его правильно сделать.

Eugene
02.03.2017
14:09:58
Юзайте userns-remap

Алексей
02.03.2017
14:10:16
А можно поподробнее или ссылочку?

Admin
ERROR: S client not available

Google
Eugene
02.03.2017
14:10:57
https://blog.yadutaf.fr/2016/04/14/docker-for-your-users-introducing-user-namespace/

вкратце- в контейнере файлы создаются под рутом, на хосте под заремапленным пользователем

Алексей
02.03.2017
14:14:07
В контейнере файлы не под рутом создаются. Кстати, в каждом контейнере - под своим пользователем. У меня связка контейнеров же через docker-compose. Ну и как-то это не очень переносимо, по идее. Это же опция демона. То есть, каждому, кто захочет запустить приложение в докере нужно будет у себя параметры запуска демона твикать?

Мне бы как-то хотелось добиться того, что человек стянул к себе проект из Git, набрал docker compose up и получил работающий стек из коробки. Чтобы и файлы были доступны его пользователю.

Anatoly
02.03.2017
14:18:14
А почему так важно монтировать данные в fs? Мы от такой схемы на named volumes переходим. Слишком много геморроя, особенно для виндузятников (есть и такие, да)

Алексей
02.03.2017
14:18:29
Например, с образом mongo это работает из коробки. Там монга запускается через gosu и всё ок. С Postgres - сложнее, т.к. там ещё initdb работает сначала под пользователем postgres, а дальше можно под чем угодно базу гонять.

А почему так важно монтировать данные в fs? Мы от такой схемы на named volumes переходим. Слишком много геморроя, особенно для виндузятников (есть и такие, да)
Чтобы можно было сохранять данные даже при удалении контейнера и его пересборке потом. Плюс чтобы иметь возможность к ним напрямую доступ получить.

Кстати, виндузятников тут не будет, так что это не проблема.

Алексей
02.03.2017
14:23:04
Но вообще вопрос с named volumes - посмотрю. Тем более, они всё равно рекомендуются в третьей версии compose.

Anatoly
02.03.2017
14:23:10
Чтобы можно было сохранять данные даже при удалении контейнера и его пересборке потом. Плюс чтобы иметь возможность к ним напрямую доступ получить.
Первую проблему named volumes решает. Вторую с костылями, но для нас это не так важно. Важно уметь дропнуть данные и уметь осознать их наличие

Алексей
02.03.2017
14:23:22
ведь после ее установки пользователь в контейнре будет тот котороый в ней указан

Алексей
02.03.2017
14:24:05
ведь после ее установки пользователь в контейнре будет тот котороый в ней указан
Не совсем понял, о чём идёт речь, если это был мне ответ (а формально он был не мне).

Алексей
02.03.2017
14:24:42
да вам

id команда такая

или whoami

Алексей
02.03.2017
14:26:56
Гм, а чем она мне поможет? Она возвращает текущего пользователя. А мне нужно будучи уже внутри Docker сделать chown с желаемым UID пользователя, который будет передан докеру от docker-compose.

Evgeny
02.03.2017
14:27:53
чот вы не понимаете

Алексей
02.03.2017
14:27:55
В принципе, мне ничто не мешает завести переменную среды, но мне кажется, что должно быть возможно работать с тем, что передано в --user и тогда переменная среды - костыль.

Evgeny
02.03.2017
14:28:23
Либо фиксируйте и синхронизируйите ID, либо любой другой костыль на ваш выбор

Google
Алексей
02.03.2017
14:28:51
Поясните 'фиксировать и синхронизировать ID'? Это очень абстрактно звучит.

Костыль я придумать могу без проблем (та же переменная среды новая), но мне кажется, что он не нужен. Но я пока не нашёл в документации информации об этом.

Anatoly
02.03.2017
15:35:33
Костыль я придумать могу без проблем (та же переменная среды новая), но мне кажется, что он не нужен. Но я пока не нашёл в документации информации об этом.
Ну опция --user это опция которая говорит доккер контейнеру какой пользователь будет внутри так? Из линуксового шелла текущего пользователя можно получить через вызов команды id или whoami

Алексей
02.03.2017
15:36:59
Но для этого пользователь должен существовать в контейнере, чтобы шелл запущенный под ним вернул по id или whoami его ID. В общем-то, вопрос в том, как этого пользователя создать для начала :)

Алексей
02.03.2017
15:42:55
Хм.

Anatoly
02.03.2017
15:43:00
Пихайте в него числами написанов документашке

Страница 298 из 610