如何写入正在运行的 docker 容器内的文件?

如何写入正在运行的 docker 容器内的文件?

cat可以从文件读取到标准输出。这样我就可以从 docker 容器中通过管道传输文件:

docker exec my_container cat file > file_on_host

当我想做相反的事情时,我需要一个从标准输入读取并保存到文件的命令。有这样的命令吗?

docker exec my_container ??? file < file_on_host

答案1

tee可以这样做:

docker exec -i my_container tee file < file_on_host

-i是标准输入工作所必需的。

它还会输出文件,可以通过重定向到主机的来避免该文件/dev/null

docker exec -i my_container tee file < file_on_host > /dev/null

答案2

与你的方法类似,

docker 执行-i我的容器dd =文件<主机上的文件

它为您提供了一个很好的状态摘要,并且不会将数据写入标准输出。

可能还有其他一些选项,例如 (可能不起作用,具体取决于容器的操作系统是否支持)和。cp /dev/stdin file/dev/stdinsh -c "cat > file"

答案3

实际上似乎更容易:

docker cp localfile.txt <CONTAINER ID>:/home/docker/data/

答案4

我一定不明白这个问题,因为你可以像第一次一样使用普通的旧重定向

docker exec my_container < file_on_host > file

或使用cat (同样,带有重定向)。

相关内容