将文件输送到docker run
作为run命令的一部分,我需要将一个文件或一些数据通过管道(注入)到docker中,并在启动时将其写入容器中的一个文件。有没有最好的实践方法来做到这一点 我试过这个将文件输送到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/<
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-composecat setup.json | docker-compose exec-t myservice sh-c“echo”
其中-T
禁用自动TTY分配。
cat setup.json | docker run -i ubuntu /bin/bash -c 'cat'