Задать вопрос
@SweetPony1

Как обойти ограничения запуска «service httpd restart» внутри контейнера Centos7?

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

[root@c9b83c24047b bitrix]# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[root@0e0550fa5092 bitrix]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
Failed to get D-Bus connection: Operation not permitted

#Dockerfile
FROM centos:latest
RUN yum -y upgrade
RUN yum -y install initscripts boost-devel && yum clean all 
#RUN yum -y install lsb boost-devel
ADD http://repos.1c-bitrix.ru/yum/bitrix-env.sh /tmp/
RUN sed -i s/'print_e "Cannot configure firewall on the server. PLease see $LOGS_FILE"'/'echo  "Cannot configure firewall on the server. PLease see $LOGS_FILE"'/gi /tmp/bitrix-env.sh
RUN sed -i 's/read version_c/version_c=5/gi' /tmp/bitrix-env.sh
RUN chmod +x /tmp/bitrix-env.sh
RUN /tmp/bitrix-env.sh <<< "n"

Пока писал, нашел очень грубое решение, где нарушается безопасность, и контейнер получает доступ к реальной машине.
https://github.com/moby/moby/issues/2296
Но хотелось бы понять, есть ли правильный способ ее решения?
#run.sh
docker build -t bitrix1/eod-docker .
docker rm -f eod-docker
docker run --privileged=true \
 --cap-add=SYS_ADMIN \
 -e "container=docker" \
 -d \
 --security-opt seccomp=unconfined \
 --tmpfs /run --tmpfs /run/lock \
 -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
 --name eod-docker -v /root/mydocker/eod-docker/bitrix:/home/bitrix \
 -ti -p 803:80  bitrix1/eod-docker \
 bash -c "/usr/sbin/init"
  • Вопрос задан
  • 1054 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rustler2000
погромист сикраш
Никак.
Systemd никак не должен быть супервайзером в контейнере.
И велосипед изобретать не надо а найти подходящий контейнер с апачем.
Ответ написан
Комментировать
Источник
#Run a container
docker run -it -e "container=docker" --privileged=true -d --security-opt seccomp:unconfined --cap-add=SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro local_redis bash -c "/usr/sbin/init"

#Exec bash to get shell
docker exec -it [ContainerID] /bin/bash --
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект