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