Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件输送到docker run_Docker_Pipe - Fatal编程技术网

将文件输送到docker run

将文件输送到docker run,docker,pipe,Docker,Pipe,作为run命令的一部分,我需要将一个文件或一些数据通过管道(注入)到docker中,并在启动时将其写入容器中的一个文件。有没有最好的实践方法来做到这一点 我试过这个 cat data.txt | docker run -a stdin -a stdout -i -t ubuntu /bin/bash -c 'cat >/data.txt' 但似乎无法让它发挥作用 更好的解决方案是使docker容器可以访问(装载)您的主机文件夹。像这样 docker run -v /Users/<

作为run命令的一部分,我需要将一个文件或一些数据通过管道(注入)到docker中,并在启动时将其写入容器中的一个文件。有没有最好的实践方法来做到这一点

我试过这个

cat data.txt |  docker run -a stdin -a stdout -i -t ubuntu /bin/bash -c 'cat >/data.txt'

但似乎无法让它发挥作用

更好的解决方案是使docker容器可以访问(装载)您的主机文件夹。像这样

docker run -v /Users/<path>:/<container path> ... 
docker-run-v/Users/:/。。。
这是
/Users/
是主机上的一个文件夹和容器内的
装载路径

另请参见手册第页

更新另一个示例


这对我有用。拆下-t。也不需要-a。

是否必须在运行时注入此文件?你能把它植入图像中吗?或者,您是否可以提前准备文件,然后将文件/文件夹从主机装载到容器中?是-要添加更多颜色,该文件实际上是一个从API中检索到的加密密钥,我希望将其注入容器中,因此它仅对容器文件系统可用。cat setup.json | docker run-a stdin-a stdout-I ubuntu/bin/bash-c‘cat’适合我。删除-t。是否可以挂载仅对特定容器可用的文件系统?@user1513388当然可以。在您的例子中,第一次调用时它看起来像
docker run-v data.txt:/data.txt-t ubuntu/bin/bash
,第二次调用时它看起来像
docker run-v data2.txt:/data2.txt-t ubuntu/bin/bash
,感谢您的更新。实际上是否可以通过STDIN传递数据并将其写入容器内的文件中?因此这是可行的,但我必须在容器启动后运行它,理想情况下我希望在容器启动之前运行它
cat data.txt | docker exec-i ubuntu sh-c'cat>/data.txt'
@user1513388你能解释一下你想要得到什么结果吗?我不能清楚地理解你的任务。使用我的示例中的
-v
挂载,可以获得您上一次对STDIN示例的评论的确切效果。坦白地说,我不明白什么不适合你:(因为默认的入口点,
cat setup.json | docker-run-I ubuntu cat
在很多情况下都可以工作。没有,docker-compose会自动分配TTY。因此,使用docker-compose
cat setup.json | docker-compose exec-t myservice sh-c“echo”
其中
-T
禁用自动TTY分配。
cat setup.json |  docker run -i  ubuntu /bin/bash -c 'cat'