我们有一个Jenkins主服务器,我们也在其中安装了docker。另外,我们还有其他3个安装了docker的远程虚拟机,
我们在詹金斯(Jenkins)的要求是做以下事情。
1)Jenkins应该从git中已提交的docker文件创建映像
2)詹金斯(Jenkins)应该将此图像推送到DTR
3)Jenkins应该将这些推送的映像启动到远程vms的容器中。
可能的方法是什么。
如何配置Jenkins在远程vms中运行容器?
答案 0 :(得分:2)
有很多方法可以做到这一点,最合适的方法取决于您的要求。以下内容非常简单,只需在不同的jenkins-agents上执行shell命令即可。
如果这些虚拟机作为代理连接到您的jenkins主服务器,则可以自由签出Dockerfile并在一个代理(或主服务器)上构建,然后切换代理并在那里启动映像。
沿着以下代码行
def image = 'image123:latest'
node('build-vm') {
stage('Checkout') {
checkout scm
}
stage('Build image') {
sh "docker build -t ${name} ."
[...]
sh 'docker push ${name}'
}
}
node('vm1') {
stage('Run image on vm1') {
sh 'docker run -d ${name}'
}
}
node('vm2') {
stage('Run image on vm2') {
sh 'docker run -d ${name}'
}
}
node('vm3') {
stage('Run image on vm3') {
sh 'docker run -d ${name}'
}
}
答案 1 :(得分:1)
理想情况下,您可以使用Jenkins Kubernetes plugin来在已安装kubectl的任何远程VM Jenkins代理上执行作业。
这允许在Docker构建中使用Docker:来自Building Docker Images inside Kubernetes编写的“ Vadym Martsynovskyy”。
您还可以使用以下任一选项,在“ Pipelines With Docker Alternatives”中的“ Joost van der Griendt's CI/CD Knowledge Docs!”中进行详细说明,
主要观点是:使用Jenkins构建docker容器通常是在Kubernetes安装上下文中完成的。