
Viktor
17.03.2019
19:15:57
Имя это просто строка в общем
спасибо. но это мне непомогло. я понимаю что разные пользователи и прочее. но мне надо чтобы права выставились правильно или пользователя создать или еще чего решение дайте если знаете плиз

George
17.03.2019
19:16:20
Далее у тебя отрабатывает docker-entrypoint.sh, который изначально из-под рута, делает chown на файлы, а потом запускает твой приклад под UID из ENV

Google

George
17.03.2019
19:17:14
Смотри. Если тебе интересно решать проблему с правами - я запретить не могу. Но могу сказать, что лучше ее избежать на входе

Viktor
17.03.2019
19:17:30

George
17.03.2019
19:17:41
Я предложил один из вариантов
Ещё обрати внимание на https://medium.com/@mccode/understanding-how-uid-and-gid-work-in-docker-containers-c37a01d01cf
Т.е. чисто гипотетически ты можешь замаппить юзера внутри докера на любого юзера снаружи

Viktor
17.03.2019
19:19:52
вот, это и пытаюсь сделать. на локалке все ок а проде чет непашет

Nazary
17.03.2019
19:55:19

Олег
17.03.2019
19:56:33
Net - сеть
I/o - in/out.
Дальше сам плс.

Nazary
17.03.2019
19:57:19

George
17.03.2019
19:57:44
Даже когда в рамках одного сервера запущены ?

Nazary
17.03.2019
19:58:02
только 2(
не думаю что на редис так дофига идет

Google

Sergey
17.03.2019
19:58:27
значения парсятся невернно вестимо

Andrey
17.03.2019
23:28:45
Ребят, а можно ли узнать какой memory limit установлен на контейнер изнутри него?

Maxim
17.03.2019
23:36:44

Andrey
17.03.2019
23:37:58

Maxim
17.03.2019
23:38:43

Andrey
17.03.2019
23:40:01

Maxim
17.03.2019
23:42:52
docker run --memory 100m
Отлично, теперь у вас задача внутри контейнера выполнить команду которая вам вернёт это значение?

Andrey
17.03.2019
23:43:00
Ну или если есть какие то более правильные способы сказать приложению внутри, сколько ему жрать можно.

Maxim
17.03.2019
23:44:37
Yep
Может при запуске контейнера создать переменную окружения -e CURRENT_MEMORY_LIMIT=100M ?
Как вы думаете?

Andrey
17.03.2019
23:45:32

Maxim
17.03.2019
23:47:02

Andrey
17.03.2019
23:48:37

Maxim
17.03.2019
23:50:14

Andrey
17.03.2019
23:52:10
О, кажись нашел!
cat /sys/fs/cgroup/memory/memory.limit_in_bytes

Maxim
17.03.2019
23:53:49

Andrey
17.03.2019
23:56:04

Google

Maxim
17.03.2019
23:56:55

Andrey
17.03.2019
23:57:49
Kiss и все такое.

Maxim
17.03.2019
23:59:43
Теперь пишем программу которая внутри увидет что вы снаружи указали 100mb


Andrey
18.03.2019
00:03:12
Наверное вы правы и нет никакой необходимости писать bash скрипты, они же сложные и только мешают
Ну ок, давайте сравним 2 решения.
Мое:
Приложение при запуске читает
/sys/fs/cgroup/memory/memory.limit_in_bytes
и просто использует его. На этом все.
Ваше:
Баш скрипт запуска и установки этой переменной снаружи.
Еще некий скрипт чтения этой переменной. А еще обязательно обработка ситуации когда лимит таки не передали (например запустили просто руками через docker run)
И в завершение еще написать ридми чтобы этим мог воспользоваться каждый.

Alexey
18.03.2019
00:03:46

Maxim
18.03.2019
00:04:43

Andrey
18.03.2019
00:05:37

Maxim
18.03.2019
00:05:39
Давайте.
Пришлите скрин где вы выделяете 100mb контейнеру, пожалуйста

Alexey
18.03.2019
00:06:18
В контейнере Java? ?

Andrey
18.03.2019
00:06:52
Но тут пока без кубиков
Да особо без разницы. Хоть в кубе крутить его, хоть без. Мое решение автоматом будет работать везде. Для вашего надо будет думать как в каждом конкретном случае сунуть переменную окружения. Да, это не сложно, но работа все же лишняя.

Maxim
18.03.2019
00:07:22

Andrey
18.03.2019
00:07:55

Maxim
18.03.2019
00:08:01

Google

Maxim
18.03.2019
00:08:24

Alexey
18.03.2019
00:08:57
Мне что-то кажется что он для Java хочет выставлять лимиты тип 90% от контейнера))

Andrey
18.03.2019
00:09:12
Как вы выделяете 100mb
Писал же, например docker run --memory 100m
или лимиты в кубике, или еще в каком нибудь оркестраторе.

Maxim
18.03.2019
00:09:42
Мы же вам пытаемся помочь

Andrey
18.03.2019
00:10:18

Maxim
18.03.2019
00:10:54

Andrey
18.03.2019
00:10:56
Мы же вам пытаемся помочь
Вы уже по моему пытаетесь переубедить меня в том что надо написать скриптов вместо того чтобы юзать нативные инструменты.)

Alexey
18.03.2019
00:11:06

Maxim
18.03.2019
00:11:14

Andrey
18.03.2019
00:13:40
У вас есть пример?
Нет, прямо под рукой нет. Но я не вижу разницы от того что будет внутри контейнера. Не важно что пойдет и прочитает файлик с sysfs.
У вас есть пример?
Если без примера прям совсем сложно то давайте предположим что есть внутри контейнера некая команда /app --memory-limit, которая ждет значение лимита.

Maxim
18.03.2019
00:16:48

Andrey
18.03.2019
00:18:40

Maxim
18.03.2019
00:19:41

Andrey
18.03.2019
00:20:05

Maxim
18.03.2019
00:21:17
Вы меня троллите?)))
Я ещё даже не начинал, я сообщил вам что неправильно вас понял и попросил рассказать о задаче которую вы пытаетесь решить

Google

Svyatoslav
18.03.2019
00:21:26
клонит в сон, по этому могу что-то не доглядеть в сообщении
остальные лимиты ток тут https://docs.docker.com/config/containers/resource_constraints/ + cgroups

Andrey
18.03.2019
00:24:37
Так, ребят. У меня 3 часа ночи, но я вроде еще адекватен.
Задача, дать приложению в контейнере понять сколько памяти ему можно жрать==какой лимит памяти стоит у контейнера.
Я нагуглил решение с чтением
/sys/fs/cgroup/memory/memory.limit_in_bytes
внутри контейнера.
На текущем этапе дискуссии уже просто хочу узнать, есть ли минусы такого решения, подводные камни.

Petr
18.03.2019
00:26:39
блин я эти лимиты когда ставил, приложение жестоко тупить начинало

Svyatoslav
18.03.2019
00:26:59
по задаче выше уже выданы все нужные ответы и ссылки

Maxim
18.03.2019
00:27:55

Andrey
18.03.2019
00:28:56

Maxim
18.03.2019
00:29:08

Svyatoslav
18.03.2019
00:29:30
))

Andrey
18.03.2019
00:29:50

Maxim
18.03.2019
00:29:59

Andrey
18.03.2019
00:30:23

Maxim
18.03.2019
00:30:53

Andrey
18.03.2019
00:32:16
Какие ваши действия?
Перед этим я почитаю доку и что-то мне подсказывает что вероятность этого намного ниже чем забывчивый разраб который не передал env. Или кривой темплейт в оркестраторе.

Maxim
18.03.2019
00:32:38

Andrey
18.03.2019
00:32:47