我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/stdin
sh -c "cat > file"
答案3
实际上似乎更容易:
docker cp localfile.txt <CONTAINER ID>:/home/docker/data/
答案4
我一定不明白这个问题,因为你可以像第一次一样使用普通的旧重定向
docker exec my_container < file_on_host > file
或使用cat
(同样,带有重定向)。