【问题标题】:docker exec wrong with remote docker host in Jenkinsdocker exec 与 Jenkins 中的远程 docker 主机错误
【发布时间】:2017-02-23 02:06:05
【问题描述】:
当执行以下命令时,我使用 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:没有可打印的内容

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

【问题讨论】:

  • 我有同样的问题。您找到解决方案了吗?

标签: jenkins docker jenkins-pipeline


【解决方案1】:

试试吧

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

这样你至少可以检查:

  • 码头工人正在工作
  • 容器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

【讨论】:

  • 谢谢,你的代码运行良好,只有在使用“docker exec -t”时才会出现这个问题
  • @herryliq 的目标是知道您是否看到容器处于运行状态
  • @herryliq 我已经编辑了答案,使用了docker exec的正确语法
  • 如果使用 docker exec -it,jenkins 会返回一些错误并退出作业。 [docker-temp] 运行 shell 脚本 + docker exec -it production-taxpayer-server-129-1 echo aaa 无法在非 tty 输入上启用 tty 模式
  • @herryliq 好的,没有任何选项?没有 -t -i?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2017-11-10
  • 2021-08-28
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多