繁体   English   中英

如何通过 jenkins 和 SSH 在远程机器中运行 docker 命令?

[英]how to run docker commands in remote machine via jenkins and SSH?

我是 jenkins 的新手,我正在尝试在 ubuntu 18.04 Live Server 上执行 docker 命令。 我已经在上面安装了 docker 并且能够通过 ssh 运行 docker 命令。 现在我需要通过 Jenkins 在服务器上运行相同的命令。 我在本地 ubuntu 20.04 台式机上安装了 jenkins。 我还安装了 docker 。 当我尝试从 jenkins 对 SSH 运行任何命令时,它可以工作,但是当我尝试运行 docker 命令(docker -v)时,它说

[SSH] 正在执行... bash:第 1 行:docker:找不到命令

我使用 echo $USER 并得到 jenkins 用户正在尝试运行命令,但我没有在远程服务器上安装 jenkins 并且没有用户名 jenkins 在服务器上运行,所以它可能无法运行

然后我在远程服务器上创建了一个 jenkns 用户(sudo useradd -s /sbin/nologin jenkins)并将其添加到 docker 组中(sudo useradd -aG docker jenkins),但它仍然无法正常工作。 我做错了什么。 或者有没有其他更好的方法代替 SSH 使用安装在不同机器上的 jenkins 在远程服务器上运行 docker 容器? 还是我需要在远程服务器上安装 jenkins?

我通过使用命令解决了

sudo ln -s /snap/bin/docker /usr/bin/docker

要使 jenkins 远程执行命令,您需要将远程主机添加到 jenkins 配置。 Go Manage Jenkins -> Configure System -> SSH remote hosts -> Add

添加主机名或它的 ip、端口和凭据。 检查您的设置,如果一切正常,您将通过它。

下一步是配置您的工作。 对于测试海豚使用自由式工作。 在配置作业 go 到Build部分并Execute shell script on remote host using ssh 选择您的 ssh 主机并键入您想要的命令。

远程主机应安装 docker 并将用户添加到 docker 组。

对于管道作业,您可以在此处找到示例

更新:

检查此代码

node {
  def remote = [:]
  remote.name = 'docker-srv'
  remote.host = '192.168.1.40'
  remote.user = 'vagrant'
  remote.password = 'vagrant'
  remote.allowAnyHosts = true
  stage('Remote SSH') {
    sshCommand remote: remote, command: "ls -lrt"
    sshCommand remote: remote, command: "docker -v"
    sshCommand remote: remote, command: "for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done"
  }
}

结果应该类似于Executing command on docker-srv[192.168.1.40]: docker -v sudo: false Docker version 19.03.9, build 9d988398e7

sudo ln -s /snap/bin/docker /usr/bin/docker

这个命令帮助我解决我的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM