当执行以下命令时,我使用Jenkins + Pipeline + DockerPlugin来构建和运行带有远程主机的docker容器:

docker.withServer("tcp://192.168.1.122:2375",'') {
    def wait_results = sh(script: "docker exec -t development-taxpayer-server-131-1 echo aaa", returnStdout: true)
    print wait_results
}



预期的结果是在Jenkins控制台日志中打印'aaa'。

远程Docker版本为:
Client:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 02:23:59 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 02:23:59 2016
 OS/Arch:      linux/amd64

最佳答案

试试吧

def wait_results = sh(script: "docker ps -a", returnStdout: true)

这样,您至少可以检查以下内容:
  • docker 正在工作
  • 容器development-taxpayer-server-131-1正在运行

  • 然后,考虑 docker exec syntax,尝试-it:
    def wait_results = sh(script: "docker exec -it development-taxpayer-server-131-1 echo aaa", returnStdout: true)
    

    注意:“How to run a command on an already existing docker container?”显示相同的回声,没有任何选择:
    docker exec development-taxpayer-server-131-1 echo aaa
    

    关于jenkins - Jenkins 中的远程docker主机的docker exec错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42405760/

    10-16 06:03
    查看更多