在Ubuntu 20.04 Docker容器安装Jenkins时遇start执行被拒问题如何解决?
在Ubuntu 20.04 Docker容器中解决Jenkins启动被policy-rc.d阻止的问题
问题原因
Docker容器默认的policy-rc.d脚本会返回101,阻止所有服务自动启动;同时普通Ubuntu容器默认未运行systemd,导致invoke-rc.d无法识别当前运行级别,触发启动被拒的错误。
解决方法
方法1:修改policy-rc.d允许服务启动
- 进入运行中的容器:
docker exec -it <容器ID/名称> bash - 修改
policy-rc.d内容,允许所有服务启动:echo "#!/bin/sh exit 0" > /usr/sbin/policy-rc.d - 赋予脚本执行权限:
chmod +x /usr/sbin/policy-rc.d - 手动启动Jenkins:
systemctl start jenkins
方法2:安装Jenkins时跳过自动启动
安装Jenkins时添加--no-start参数,避免安装过程中自动触发启动:
apt-get update && apt-get install jenkins --no-start
之后再手动启动服务:
systemctl start jenkins
方法3:配置容器支持systemd
普通Ubuntu镜像默认未运行systemd,可通过以下方式配置:
- 启动容器时挂载systemd控制组并开启特权模式:
docker run -d --name jenkins-container --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro ubuntu:20.04 - 进入容器后安装systemd:
apt-get update && apt-get install -y systemd - 重新启动容器后,再安装并启动Jenkins。
内容的提问来源于stack exchange,提问作者Md Afsar Ansari
相关产品推荐
相关产品推荐

