LINUX.ORG.RU

Как в 2017 году правильно запускать systemd в докере

 ,


0

3

Сабж.
Как в 2017 году правильно запускать systemd в докере (если ты разработчик нового контейнера).
Сил моих нет более писать велосипедные скрипты, когда есть чудесный системд

Как-то так:

FROM fedora
RUN yum -y install httpd; yum clean all; systemctl enable httpd;
CMD [ "/sbin/init" ]

умом понятно, что есть туча патчей от редхата (ни один из которых не приняли, но часть из них есть в редхатовских сборках докера), есть --privileged, итп. Но хочется четенько понять что делать.

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 3)

вот так:

# rpm -e docker --force

anonymous
()
Ответ на: комментарий от Radjah

Конечная цель озвучена в обновленном топике. Я не хочу писать то, что уже написано мантейнерами пакетов в лучшем виде. Хочу на старте установить нужные пакеты пакетным менеджером, поназапускать это всё и не париться.

В частности я кодю на джаве, и в качестве инита для запуска нескольких джава-приложений на одном контейнере - приходится использовать всякие Enterprise Application Servers. А ведь эти аппсервера - это и есть древнючий аналог контейнеров. Получается масло масляное - убогий контейнер внутри контейнера.

Заметь что подход «напиши сам» тут не рабоатет. Например, для PID1 явно нужно умение убивать зомби, которое может дать только --privileged (после чего контейнер сможет обращаться к любому девайсу вне себя, и песочница развалилась). Если написать свой PID1, проблема будет совершенно та же. Например, если ты запустишь в контейнере какую-нибудь базу данных типа Оракла, там всё будет завалено зомбями

Наверное, нужна сквозная интеграция с системд на хосте и системд внутри хоста. А проблема в том, что команда Докера люто бешено ненавидит системд и не принимает таких патчей. Но патчи всё равно есть, и наверное всё это можно как-то собрать в правильном порядке.

Вопрос в том, каков этот правильный порядок. Может быть есть какой-то хороший современный гид на эту тему.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)

Че за хипстерская мода на этот бесполезный докер пошла

Siado ★★★★★
()

Зачем тебе systemd? Для докера есть dumb-init.

Deleted
()
Ответ на: комментарий от Radjah

А тут мы переходим к тому, что докер - это тренд. И отказавшись от Докера придется реально лососнуть леща и самостоятельно писать нереальную тонну гуёв

Связанный вопрос: Вебморда для докера

stevejobs ★★★★☆
() автор топика

Имхо, тебе хочется странного

Зачем в докере systemd? Один контейнер - одна логическая задача.

Deleted
()
Ответ на: комментарий от stevejobs

Ну в этом случае можно cockpit накатить и рулить вообще всем. :)

Radjah ★★★★★
()
Ответ на: комментарий от stevejobs

А проблема в том, что команда Докера люто бешено ненавидит системд и не принимает таких патчей.

Лол. А где почитать драму?

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Лол. А где почитать драму?

Это плод фантазии из наркотических трипов стиви. (про лютую ненависть к системд) Вообще же в докере инит не нужен, в контейнере должен быть один сервис и он же должен быть точкой входа в этот контейнер. Когда же появляется необходимость в ините, это верный признако того что докер используют поскольку модно хотя для решения задачи нужен другой инструмент.

anonymous
()

Ты не правильно используешь докер.

Oxdeadbeef ★★★
()
Ответ на: комментарий от intelfx

Лол. А где почитать драму?

https://lwn.net/Articles/676831/
https://github.com/docker/docker/pull/13525
https://github.com/docker/docker/pull/7685

Из свежего http://rhelblog.redhat.com/2017/01/13/selinux-mitigates-container-vulnerability/ vs. https://news.ycombinator.com/item?id=13398249

vrutkovs ★★
()
Последнее исправление: vrutkovs (всего исправлений: 1)

Я когда-то на это тоже напоролся. В общем, оно не так работает. Один контейнер — одна задача/сервис/etc. А управлять зоопарком через ansible, docker compose итп.

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

У нас нет раздела девопс, есть админ. Админы как правило, написанием кода не занимаются. А тут как раз нужно много кода, чтобы идти против течения желаний команды Докера.

stevejobs ★★★★☆
() автор топика

ещё из прошлого треда было понятно, что тебе нужна виртуалка какая нибудь
всё с чем ты борешься — это какие-то ветряные контейнеры

system-root ★★★★★
()
Ответ на: комментарий от system-root

виртуалка - это слишком дорого, и слишком долго запускается :( Одно время у меня был вагранты на виртуалбоксе, но когда время загрузки начало переваливать за двадцать минут, пришлось их похоронить. Один раз внес изменение в код - и скорей всего нужен полный рестарт, то есть несколько строчек - и день закончился, дно. И если для Java есть тулзы типа JRebel (который всё равно нельзя, потому что деньги), то для C++ ничего такого нет даже в теории. Еще был опыт с вагрант-lxc, но там постоянно баги, их некогда самостоятельно править. Пользоваться вагрант-вмваре тоже не получится, это слишком дорого уже не только по ресурсам, а еще и по нифига не бесплатной лицензии. Всё это можно было бы починить, имея кучу серваков по сто двадцать восемь ядер каждый, с терабайтами RAM - к сожалению, у меня столько нету. Заработаю - будет, а пока вот так.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

и вообще solaris zones или freebsd jails решают твои проблемы на 100% но их не будет на линуксе пока жив хайп про эти ваши докеры и таких как ты не наберётся критическая масса /thread

system-root ★★★★★
()

В докере инит не нужен. Хочешь контейнер с инитом - используй systemd-nspawn (machinectl).

slaykovsky ★★★
()
Ответ на: комментарий от stevejobs

у солярки два дистра живы: nexenta и omnios
в фряху каждый день коммитят из кучи корпорация, например DELL
почти все вендоры СХД там светятся, очень странно для мертвой ОС, как думаешь?

system-root ★★★★★
()
Ответ на: комментарий от slaykovsky

Все что я пишу - это не про Сбер, а про себя (как минимум, про Себр писать нельзя по NDA). В сбере ресурсы на кластер, который запустит что угодно с любой скоростью, нашлись бы со скоростью написания письма. А вот когда ты приходишь домой и с друзьями пытаешься продолжить работу по написанию игрового сервера (c++, java) который писали пять лет толпа индусов и бросила от беспомощности - это совершенно другое дело. Например ты четко понимаешь, что для запуска хэлловорлда на джаве нужен сервак со стоимостью 1 тысяча рублей в месяц - считай сам, сколько хэлловорлдов можно запустить на твою зарплату.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от system-root

углублю про смерть фряхи посмотрев на коммиты в ядро, только ради тебя. не призываю ею пользоваться, речь лишь про «умерла или нет»

возможно для аналитиков лора эти названия не имеют значения, но ты то сознательный гражданин?

system-root ★★★★★
()
Ответ на: комментарий от slaykovsky

почему троллинг? думаю «предрассудки»
тем более ответ не какому нибудь реинкарнировавшему монобогдану, а нормальному регистранту

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

а это новые фичи, или тупо поддержка? По мне так, и линукс чего-то не сильно развивается) Понятно что всё это ради стабильности... но после лозунгов типа «тысяча коммитов в день!» (или более консервативного) то, что в проект может приехать всего один коммит в день - это выглядит как посреди огромного безлюдного города ты раз в день встречаешь одиноко бредущего человека

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

у меня нет статистики что чаще встречается add\implement или fix
но вчера, например, запилили manpage compiler toolset который в два раза быстрее GNU (кто б сомневался) но это не ядро, в ядре которому почти двадцатник сложно каждый день новые фичи придумывать

system-root ★★★★★
()

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

1. Используй ансибл для провижининга докер-хостов, но не самих контейнеров. Этот путь исхожен и заканчивается тысячью и одним костылем, в чем винить ты будешь конечно хипстеров. Если по каким-то причинам тебе не удобно собрать конечный имидж, собери какой-то базовый, а из entrypoint контейнера дособери, доконфигурируй все остальное. То есть идея в том, чтобы конфигурировать контейнер не снаружи, а изнутри.

2. Не запускай все говно разом в одном контейнере. Раскидай все кусочки по разным контейнерам, в конечном счете это даст бонусы: система научится переживать падение и перезапуск своих частей (если не умела), упростится разворачивание, обновление и, главное, масштабирование системы, а это уже путь в докер-облака. А еще ты избавишься от бг-мерзго инита!

staseg ★★★★★
()
Ответ на: комментарий от system-root

Кстати, как там они, еще не передумали libxo засовывать куда надо и куда не надо?

У меня ощущение, что в последнее время многих разработчиков open source покусала бешеная муха. Линуксоиды упарываются systemd, фряшники впиливают XML в базовые утилиты, NetBSD внедрила lua в ядро. Эпидемия, что ли?

Deleted
()
Ответ на: комментарий от Deleted

фряшники впиливают XML куда надо и куда не надо

IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)

это по твоему нормально? универсальные интерфейсы с json или xml не нужны? нам солнце не надо, нам GNU светит

system-root ★★★★★
()
Ответ на: комментарий от system-root

нам солнце не надо, нам GNU светит

Два дебила — это сила. (c)

GNU придумывают одни нестандартные возможности для стандартных утилит, BSD — другие. Как этот зоопарк надоел, ей-богу. Хотите новых прогрессивных утилит, дайте им новые прогрессивные имена. my-super-puper-grep, my-super-puper-head, my-super-puper-ls.

это по твоему нормально? универсальные интерфейсы с json или xml не нужны?

Когда я последний раз слышал новости о libxo, они поломали вывод для классических форматов вывода и судорожно чинили. Речь не о том, что что-то «не нужно», а о том, что делается слегка через задницу. POSIX чинить бесполезно, его можно только выкинуть. Лет через 50, вряд ли раньше получится. А так я, конечно, только за.

Deleted
()
Ответ на: комментарий от Deleted

my-super-puper-ls должен, из названия, фильмы в mkv играть и QR коды показывать
это лишь нормальный интерфейс, за который Столлман сжег бы на костре ибо нарушение веры и ненужно в его манямирке

system-root ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.