jenkins - Jenkins 中的远程docker主机的docker exec错误

标签 jenkins docker jenkins-pipeline

当执行以下命令时,我使用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
}

wait_results : nothing to print



预期的结果是在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/

    相关文章:

    bash - Dockerfile 中需要冗余 eval $(opam env)

    mongodb - 无法连接到工作的Dockerized Mongo ReplSet

    Docker Windows 10 - 如何运行 Jenkins,在 d 驱动器上绑定(bind)卷而不会出现权限错误

    java - 如何检查 hudson 是否忙?

    docker - 无法启动容器:进程被终止

    jenkins - Jenkinsfile 中的通用包装器

    shell - 当搜索到的字符串不存在时,Jenkins shell 脚本返回退出代码 1

    jenkins - 如果节点离线,跳过 Jenkins 流水线步骤

    java - 在 Jenkins 主( headless )节点上使用 native Windows 选择器选择文件

    github - 在提交/拉取请求时跟踪多个 github 存储库以构建 jenkins 作业