从另一个docker容器获取docker容器输出

时间:2017-12-06 13:48:55

标签: docker docker-compose ipc

我有一个通过docker run --rm ...运行dockerized命令的应用程序。是否可以将此应用程序停靠?

E.g。我希望应用RUNNER运行应用RUNNABLE并阅读标准输出结果。 (我需要异步调用时的多个RUNNABLE实例,但RUNNER应用程序业务

我知道可以将对docker socket的root访问权限导出到RUNNER应用程序,但这感觉不对。尤其是* nix应用程序的无根运行规则。

是否有其他方法来传递容器而不是将套接字导出到容器?我的系统设计错了吗?

1 个答案:

答案 0 :(得分:0)

基本上,可以让容器通过基于主机的文件进行通信。看一下下面的例子。

# create a test dir
mkdir -p docker_test/bin
cd docker_test
# an endless running script that writes output in a file
vim bin/printDate.sh
chmod 700 bin/*.sh
# start docker container from debian image
# the container got a local host mount of /tmp to container /opt/output
# printDate.sh writes its output to container /opt/output/printDate.txt
docker run --name cont-1 \
  -v /tmp:/opt/output -it -v `pwd`/bin:/opt/test \
  debian /opt/test/printDate.sh

# start a second container in another terminal and mount /tmp again
docker run --name cont-2 -v /tmp:/opt/output -it \
  debian tail -f /opt/output/printDate.txt
# the second container prints the output of program in cont-1

容器1输出的无尽脚本

#!/bin/bash
while true; do
     sleep 1
     date >> /opt/output/printDate.txt
done