docker - 如何通过 jenkins 管道在远程服务器上拉取和运行 docker 镜像
问题描述
我有 2 个 aws ubuntu 实例:第一个服务器和第二个服务器。
下面是我的 jenkins 管道脚本,它创建 docker 镜像并在第一台服务器上运行容器并将镜像推送到 docker hub repo。这工作正常。
我想提取图像并将其部署在第二台服务器上。
当我通过下面的管道脚本为第二台服务器执行 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/"
推荐阅读
- python - 即使安装成功也找不到jpype
- bash - 当本地和远程更改相同的文件但不同的行时,我可以从 git 中提取吗
- python - 在 CPython C 扩展类型上的属性读/写之前获取锁
- c# - GetAsync 在 .net Framework 4.7.2 中挂起,但在 4.6.2 中没有
- javascript - 组合多个元素并将结果附加到 div
- regex - 如何用崇高文本中的正则表达式替换特定字符串?
- node.js - MongoClient 发生错误时不会触发回调
- tomcat - Tomcat Rewrite Valve - 如何在客户端浏览器上保留漂亮的 URL
- ruby-on-rails - 不能将 x-editable 包含到 Rails 6
- android - Cordova CLI“cordova build android”错误“似乎不是 xcode 项目,没有 xcode 项目文件...”?