簡體   English   中英

如何通過 jenkins 管道在遠程服務器上拉取和運行 docker 鏡像

[英]How to pull & run docker image on remote server through jenkins pipeline

我有 2 個 aws ubuntu 實例:第一個服務器和第二個服務器。

下面是我的 jenkins 管道腳本,它創建 docker 鏡像並在第一台服務器上運行容器並將鏡像推送到 docker hub 存儲庫。 這工作正常。

我想拉取映像並將其部署在第二台服務器上。

當我通過下面的管道腳本為第二台服務器執行 ssh 但它登錄到第一台服務器時,即使 ssh 憑據('my-ssh-key')是第二台服務器。 我很困惑它是如何登錄到第一台服務器的,我使用觸摸命令進行了檢查,因此該文件是在第一台服務器上創建的。

pipeline {
  environment {
    registry = "docker-user/docker-repo"
    registryCredential = 'docker-cred'
    dockerImage = ''
  }
  agent any
  stages {
    stage('Cloning Git') {
      steps {
        git url: 'https://github.com/git-user/jenkins-flask-tutorial.git/'
      }
    }
    stage('Building image') {
      steps{
        script {
          sh "sudo docker build -t flask-app-one ."
          sh "sudo docker run -p 5000:5000 --name flask-app-one -d flask-app-one "
          sh "docker tag flask-app-one:latest docker-user/myrepo:flask-app-push-test"
        }
      }
    }
    stage('Push Image') {
      steps{
        script {
          docker.withRegistry( '', registryCredential ) {
          sh "docker push docker-user/docker-repo:flask-app-push-test"
          sshagent(['my-ssh-key']) {
            sh 'ssh -o StrictHostKeyChecking=no ubuntu@2ndserver && cd /home/ubuntu/ && sudo touch test-file && docker pull docker-user/docker-repo:flask-app-push-test'
          }
         } 
        }
      }
    }

我的問題是,如何通過 jenkins 管道腳本登錄到第二台服務器並在第二台服務器上拉取 docker 鏡像? 幫我找出我做錯的地方。

這與其說是解決方案,不如說是一種替代方案。 您可以將遠程命令作為 ssh 的一部分執行。 這將在服務器上執行命令並斷開連接。

ssh name@ip "ls -la /home/ubuntu/"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM