我希望Jenkins文件做的基本示例:
node {
sh 'docker build -t foo/bar .'
}
好像我需要将docker安装到正在执行我的Jenkinsfile的Jenkins从属映像上 . 有这么简单的方法吗? (Jenkins奴隶图像本身就是一个docker容器)
我的假设是否正确?
-
与Jenkins主/从服务器一起运行时,Jenkins文件由Jenkins从服务器执行
-
通过Manage Plugins部分安装的Jenkins插件(例如Docker插件或Gcloud SDK插件)仅安装在Jenkins主机上,因此我需要手动构建我的Jenkins slave docker镜像并在映像上安装docker?
因为我还需要访问'gcloud'命令(我_999999_已使用 gcr.io/cloud-solutions-images/jenkins-k8s-slave
图像为我的Jenkins奴隶 .
目前它错误地说“码头:没找到”
1 回答
我的假设是你想在Jenkins奴隶里面(
docker build
,这是一个Kubernetes pod,我假设是由Kubernetes Jenkins Plugin创建的)要设置阶段,当Kubernetes创建将充当Jenkins从属的pod时,您在节点内执行的所有命令都将在Kubernetes pod内执行,在其中一个容器内(默认情况下只有一个容器,但是稍后会详细介绍 .
所以你实际上是在基于
gcr.io/cloud-solutions-images/jenkins-k8s-slave
的容器内运行Docker命令,这很可能是基于the official Jenkins JNLP Slave, which does not container Docker!从现在开始,您可以采取两种方法:
/var/run/docker.sock
) . (You can find details on this approach here) . Here is an image that contains the Docker client and kubectl .以下是如何配置Jenkins插件的完整视图:
正如我所说,JNLP图像将启动您在同一个窗格中指定的容器 . 请注意,为了从容器中使用Docker,您仍然需要安装Docker袜子 .
这是我发现在容器内运行的Jenkins JNLP从站内实现构建映像的两种方法 .
该示例还演示了如何使用Jenkins的凭据绑定来推送映像,以及如何在构建过程中更新Kubernetes部署 .
更多资源:
谢谢,Radu M.