我有一个通过docker run --rm ...
运行dockerized命令的应用程序。是否可以将此应用程序停靠?
E.g。我希望应用RUNNER
运行应用RUNNABLE
并阅读标准输出结果。
(我需要异步调用时的多个RUNNABLE
实例,但RUNNER
应用程序业务
我知道可以将对docker socket的root访问权限导出到RUNNER
应用程序,但这感觉不对。尤其是* nix应用程序的无根运行规则。
是否有其他方法来传递容器而不是将套接字导出到容器?我的系统设计错了吗?
答案 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