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

And*_*eKR 2 io-redirection docker

随着cat我可以从文件到stdout阅读。例如,我可以通过这种方式将文件从 docker 容器中导出:

docker exec my_container cat file > file_on_host
Run Code Online (Sandbox Code Playgroud)

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

docker exec my_container ??? file < file_on_host
Run Code Online (Sandbox Code Playgroud)

And*_*eKR 6

tee 可以这样做:

docker exec -i my_container tee file < file_on_host
Run Code Online (Sandbox Code Playgroud)

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

它还将输出文件,可以通过重定向到主机的 来避免这种情况/dev/null

docker exec -i my_container tee file < file_on_host > /dev/null
Run Code Online (Sandbox Code Playgroud)


Sco*_*ott 5

与你的方法类似,

\n
\ndocker exec -i my_container dd of= file < file_on_host \n
\n

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

\n

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

\n