Есть много причин для того, чтобы запускать systemd внутри контейнера:
- Мультисервисные контейнеры – многие хотят вытащить свои приложения из виртуальных машин и запускать их в контейнерах.
- Юнит-файлы – у большинства приложений есть юнит-файл. Systemd управляет этими юнитами.
- systemd – это диспетчер процессов. Он осуществляет управление сервисами (завершает работу, перезапускает сервисы).
Если вы собираетесь управлять контейнерами, через средства оркестрации типа Kubernetes или OpenShift, то не рекомендуется использование контейнеров на базе systemd.
Содержимое Dockerfile:
FROM ubuntu:20.04
MAINTAINER Sobir Akbarov <[email protected]>
ARG DEBIAN_FRONTEND=noninteractive
RUN echo 'Acquire::http::proxy "http://ubuntu.cict.tj:7373";' > /etc/apt/apt.conf
RUN apt update; apt install apt-utils dialog iproute2 dnsutils inetutils-ping ncat nano less -y
RUN echo 'root:toor' | chpasswd; apt install openssh-server -y; sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
EXPOSE 22
CMD [ "/sbin/init" ]
Собираем контейнер:
podman build -t systemd .