Докер-контейнер Ubuntu с выскочкой и системным журналом

После поиска я все еще не понимаю, можете ли вы иметь контейнер Docker под управлением Ubuntu с работающей системой инициализации (upstart) и syslog, или не.

Я знаю, что контейнеры докеров предназначены для запуска одного процесса, а не полной ОС, но мой вариант использования — тестирование демона в различных дистрибутивах Linux, проверка того, что демон успешно запускается, останавливается и перезапускается при сбоях и т. д., с записью в системный журнал . Поэтому я пытаюсь решить, могу ли я использовать для этого док-контейнер или, может быть, мне лучше использовать Vagrant.

Некоторые ресурсы, которые я нашел, сбивают с толку:

  • #P4# <блочная цитата> #P5#
  • #P6# <блочная цитата> #P7#

Итак, в конце концов мне нужно иметь возможность запускать:

$ initctl start <daemon>
$ initctl stop <daemon>

естественно после создания нужного файла конф на /etc/init/<daemon>.conf и просмотра логов с syslog.


person Calin    schedule 21.10.2015    source источник
comment
Взгляните на baseimage-docker github.com/phusion/baseimage-docker, который имеет инициализацию система и системный журнал   -  person user2915097    schedule 21.10.2015
comment
Да, но это не выскочка. Мой демон определяет выскочку как систему инициализации, поскольку она используется по умолчанию в Ubuntu, поэтому затем он использует initctl. Что не будет работать с их пользовательской системой инициализации.   -  person Calin    schedule 21.10.2015
comment
Рассматривали ли вы систему инициализации, отличную от выскочки? Я знаю, что phusion[1] использует Ubuntu в качестве базового образа. Он использует runit[2]. Существуют и другие демоны, такие как supervisor[3]. [1]: github.com/phusion/baseimage-docker [2]: smarden.org/runit [3]: supervisord.org   -  person ThisGuyCantEven    schedule 25.06.2021


Ответы (1)


см. https://github.com/BITPlan/docker-stackoverflowanswers/tree/master/33233329, чтобы повторить шаги

Переход из Dockerfile

FROM ubuntu:14.04

построить его:

docker build -t bitplan/ubuntutest:0.1 .
Sending build context to Docker daemon 2.048 kB
Step 0 : FROM ubuntu:14.04
---> 0a17decee413
Successfully built 0a17decee413

запустить его:

docker run -it bitplan/ubuntutest:0.1 /bin/bash

и проверка запущенных сервисов:

 root@50a738241d03:/# service --status-all
 [ ? ]  console-setup
 [ + ]  cron
 [ ? ]  killprocs
 [ ? ]  kmod
 [ ? ]  networking
 [ ? ]  ondemand
 [ - ]  procps
 [ ? ]  rc.local
 [ + ]  resolvconf
 [ - ]  rsyslog
 [ ? ]  sendsigs
 [ - ]  sudo
 [ - ]  udev
 [ ? ]  umountfs
 [ ? ]  umountnfs.sh
 [ ? ]  umountroot
 [ - ]  urandom

Вы можете видеть, что в типичном контейнере на основе ОС работает несколько служб. Если вы установите больше таких вещей, как apache, mysql и тому подобное, будет больше сервисов.

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

запуск службы остановка службы

которые вы найдете, например. в точке входа нашего образа docker-mediawiki по адресу:

https://github.com/BITPlan/docker-mediawiki/blob/master/docker-entrypoint.sh

см. напр.

service mysql start

там.

person Wolfgang Fahl    schedule 21.10.2015
comment
Я не уверен, как это отвечает на мой вопрос. Я знаю, что вы можете установить любые службы, какие захотите, но вопрос был конкретно в том, можете ли вы выскочки работать в контейнере Ubuntu. В основном, чтобы иметь возможность копировать стандартную машину Ubuntu. - person Calin; 21.10.2015
comment
Различия см. на странице askubuntu.com/questions/353382/service-vs-initctl. Я сам не использую initctl - поскольку сервис - это более старая концепция, я предполагаю, что если сервисный подход работает (что он делает в моей среде), то подход initctl также должен работать. - person Wolfgang Fahl; 22.10.2015
comment
Не совсем. В контейнере ubuntu:14.04 по умолчанию /sbin/initctl имеет exit 0. - person Calin; 22.10.2015
comment
Я имею в виду, что это все, что он содержит. - person Calin; 22.10.2015