Можно ли установить FreeBSD, OpenBSD, NetBSD и DragonFly на один диск?

Мне удалось исправить эту проблему в контейнере CentOS: 7 Docker. В основном я следовал Руководству по проекту образа CentOS Docker .

FROM centos:7

ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;

# Install anything. The service you want to start must be a SystemD service.

CMD ["/usr/sbin/init"]

Теперь создайте образ и запустите его, используя как минимум следующие аргументы команды docker run : -v / run -v / sys / fs / cgroup: / sys / fs / cgroup: ro

Главное здесь то, что / usr / sbin / init должен быть первым процессом внутри контейнера Docker.

Итак, если вы хотите использовать собственный сценарий, который выполняет некоторые команды перед запуском / usr / sbin / init , запустите его в конце вашего сценария, используя exec / usr / sbin / init (в сценарии bash).

Вот пример:

ADD cmd.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/cmd.sh

CMD ["/usr/local/bin/cmd.sh"]

А вот содержимое cmd.sh :

#!/bin/bash

# Do some stuffs

exec /usr/sbin/init # To correctly start D-Bus thanks to https://forums.docker.com/t/any-simple-and-safe-way-to-start-services-on-centos7-systemd/5695/8

У вас может быть Система загружается. См. Pam_nologin (8) , если вы используете систему PAM, в этом случае удалите /usr/lib/tmpfiles.d/systemd-nologin.conf в вашем Dockerfile , потому что он создает файл / var / run / nologin , который генерирует эту конкретную ошибку.

1
03.09.2015, 02:13
0 ответов

Теги

Похожие вопросы