我目前正在处理以下场景
我正在尝试在 OpenShift 中设置一个容器,该容器运行一个本身能够运行 docker 的 Jenkins,以利用在其自己的 docker 容器中运行构建的声明性管道。这基本上使得有必要在这个容器内安装和运行 docker。
我已经研究了很长时间了。在网上查了几十个帖子和线程,但我没能完成它。基本上我到目前为止
- 我可以在我的容器中安装 docker(来自 baseimage openshift/jenkins-2-centos7:latest)
- 我无法让 docker 运行,因为它使用了 systemctl
现在我读到 systemctl 不能在 docker 容器中工作,或者至少是高度不推荐的,因为它会干扰系统中的 PID 1。没有
systemctl start docker
这将使我无法与守护进程连接(如预期的那样)和错误消息
无法连接到 docker 守护进程。'docker -d' 是否在此主机上运行?
所以我尝试使用自己设置守护进程
我的 Dockerfile 中的以下内容
RUN usermod -aG docker $(whoami)
RUN dockerd -H unix:///var/run/docker.sock
这也不会告诉我无法安装 cgroups。经过更多研究后,我发现这可以使用来自的 cgroupfs-mount 脚本来处理
https://github.com/tianon/cgroupfs-mount/tree/master
但在这里我也没有运气留下以下错误
启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:无法创建 NAT 链 DOCKER:iptables 失败:iptables -t nat -N DOCKER:iptables v1.4.21:无法初始化 iptables 表“nat”:权限被拒绝(您必须是 root)也许需要升级 iptables 或您的内核。
现在下班后我没有想法。有谁知道如何让 docker 在 OpenShift 内部工作?真的很棒