【发布时间】:2019-11-22 08:09:05
【问题描述】:
我记得,stdin、stdout 和 stderr 是Process control block 中文件描述符表的前 3 个条目。
在 AWS EC2 实例上(host1),我们有 jenkins 从属设备(比如slave-container)。
slave-container 包含与运行在host1 上的 docker 守护进程对话的 docker 客户端
slave-container 在host1 上启动另一个 docker 容器(比如 build-container 以构建源代码)。
下面是slave-container的管道输出:
Running on slave-container in /var/jenkins_home/workspace/abc-app
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Buildabcapp)
[Pipeline] sh
+ docker inspect -f . 111111111110.dkr.ecr.us-east-1.amazonaws.com/someteam/abc-build:7-jdk.x.2
.
[Pipeline] withDockerContainer
slave-container seems to be running inside container 55664444444444444444444444444444444444444444
$ docker run -t -d -u 9000:9000 -w /var/jenkins_home/workspace/abc-app --volumes-from 55664444444444444444444444444444444444444444 111111111110.dkr.ecr.us-east-1.amazonaws.com/someteam/abc-build:7-jdk.x.2 cat
[Pipeline] {
[Pipeline] sh
+ grep -q success
+ echo Yes
docker run 以上命令启动 build-container,它运行 shell 命令,在 stdout 的 slave-container 上提供输出:
+ grep -q success
+ echo Yes
build-container 的标准输出/标准错误如何显示在slave-container 的标准输出上?
【问题讨论】:
-
看!
{}与抑制输出无关(在这里与您讨论:stackoverflow.com/questions/56960876/…)。另外,我不会将所有东西整合在一起然后开始尝试解决问题,而是一次做一步。 Jenkins 是这里的重要因素,我相信不是 docker。 -
@Perplexabot Jenkins 正在 docker 容器中运行
-
之前带有
+的任何内容很可能是由于Jenkins而不是docker
标签: linux docker jenkins stdout docker-machine