использовал образ докера jrei / systemd-ubuntu, я сделал контейнер. ссылка: https://hub.docker.com/r/jrei/systemd-ubuntu/dockerfile
Моя конечная цель - добавить новую службу с помощью systemctl и запустить ее при загрузке контейнера.
Итак, я провел 3 следующих теста.
excute / lib / systemd / systemd в файле sh
!/bin/bash while true do /lib/systemd/systemd result=$(ps -ax|grep -v grep|grep systemd-journald) if [ "${#result}" -ne 0 ] then systemctl daemon-reload systemctl start gunicorn systemctl enable gunicorn break else echo "${#result}" fi done
результат: произошла ошибка
msg: попытка запуска от имени пользователя, но система не была загружена с помощью systemd.
добавить команду в docker-compose.yml
command: - /bin/bash/ - /root/test.sh
результат: произошла ошибка
msg: попытка запуска от имени пользователя, но система не была загружена с помощью systemd.
перестроить файл докеров на основе jrei / systemd-ubuntu
FROM jrei/systemd-ubuntu COPY service/* /etc/systemd/system/ COPY test.sh /root/test.sh RUN chmod +x /root/systemctl_cmd.sh VOLUME [ "/sys/fs/cgroup" ] ENTRYPOINT ["/root/systemctl_cmd.sh"]
результат: произошла ошибка
msg: попытка запуска от имени пользователя, но система не была загружена с помощью systemd.
Даже трижды тестировал, никак не мог найти.
Итак, я надеюсь получить представление, как я могу запускать вышеуказанные команды. И я хочу знать, как я получаю информацию о состоянии загрузки системы. Я думаю, что если я запускаю команду systemctl после завершения загрузки, она может работать.
любая идея или совет полезны.
CMD ["gunicorn"]
в вашем Dockerfile и сделать это единственным процессом в контейнере. - person David Maze   schedule 28.04.2020