将一个docker容器的stdout附加到另一个docker容器的stdin

时间:2017-11-30 11:42:50

标签: python-2.7 docker stdout stdin docker-volume

我想将容器A中脚本的stdout传递给容器B的stdin,然后将容器B的stdout传递给容器C的stdin。我想知道做同样事情的最佳实践是什么。

选项1

docker run -it ImageA python script1.py | docker run -it ImageB python script2.py |  \ 
docker run -it Image3 python script3.py

选项2

使用共享卷存储后续容器可以访问的数据。

docker run -it -v /home/shared_volume:/container1_home/shared_volume python script1.py 

docker run -it -v /home/shared_volume:/container2_home/shared_volume python script2.py 

docker run -it -v /home/shared_volume:/container3_home/shared_volume python script3.py 

理想情况下,我更喜欢不使用共享卷。 script1.py和script2.py的输出产生大约几TB的中间文件(或数据流)。我对这些文件不感兴趣,我宁愿只将script3.py的结果存储到磁盘上。

1 个答案:

答案 0 :(得分:0)

你可以通过不带-t选项运行它来尝试相同的;我能够像下面那样做一个样本,它正在工作

$docker run -i ubuntu:xenial ls -l | docker run -i ubuntu:xenial wc -l
$20