Tenemos un servidor maestro Jenkins y donde también hemos instalado docker. También tenemos otros 3 vms remotos con Docker instalado en ellos,
Nuestro requisito aquí en Jenkins para hacer las cosas a continuación.
1) Jenkins debería crear una imagen desde el archivo docker comprometido en git
2) Jenkins debería enviar esta imagen al DTR
3) Jenkins debería lanzar estas imágenes enviadas a los contenedores en el vms remoto.
Cuáles son las posibles formas de hacerlo.
¿Cómo configurar Jenkins para ejecutar los contenedores en las máquinas virtuales remotas?
Hay muchas maneras de lograr esto, lo que mejor se adapte dependerá de sus requisitos. Lo siguiente es muy simple y solo ejecuta comandos de shell en diferentes agentes jenkins.
Si esas máquinas virtuales están conectadas a su maestro jenkins como agentes, puede verificar su Dockerfile y crear un agente (o maestro), luego cambiar de agente y lanzar su imagen allí.
En la línea de lo siguiente recortado
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}' } }Idealmente, usaría el complemento Jenkins Kubernetes para ejecutar trabajos en cualquier agente remoto de VM Jenkins, donde se haya instalado kubectl.
Eso permite una compilación de Docker en Docker: de " Building Docker Images inside Kubernetes " escrito por Vadym Martsynovskyy .
También tiene otras opciones, detalladas en " Pipelines With Docker Alternatives " de " Joost van der Griendt's CI/CD Knowledge Docs! ", usando cualquiera de las siguientes:
El punto principal es: la creación de contenedores docker con Jenkins a menudo se realiza en un contexto de configuración de Kubernetes.