在docker ubuntu18.04的image中安装jenkins并启动之后发现没有反应。使用service命令也看不出来什么有用的信息,于是想到用systemctl启动,这样可以使用journalctl -xe
查看具体的出错信息。但是运行之后说没有systemctl这个命令,首先进行安装apt install systemd
。systemd是最近流行的linux启动服务管理工具,基本上替换了之前的init和chkconfig以及service命令。PS:systemd可以并行处理所有服务,加速开机流程,而旧的init启动脚本是串行启动的。
这次运行systemctl命令之后出现错误:System has not been booted with systemd as init system (PID 1). Can’t operate.
这是由于默认的Docker权限措施禁止了该项操作,可参考Seccomp security profiles for Docker。
最终解决方案:
docker run -it --cap-add SYS_ADMIN --security-opt=seccomp:unconfined -v /sys/fs/cgroup:/sys/fs/cgroup:ro -d -p 8080:8080 --name jenkins_server ubuntu:sdkman.jenkins.systemd /sbin/init
参考文献: