将文件从Rust复制到Docker容器中

cwtwac6a  于 2023-03-17  发布在  Docker
关注(0)|答案(1)|浏览(146)

我正在尝试写一个Rust程序,它使用Command来复制Docker容器中的一些文件。代码如下所示:

Command::new("cmd").arg("/C")
        .arg(&format!("docker cp {file_name} {container}:/home/", container=&container_name, file_name=&source_file))
        .spawn()
        .expect("command failed")

变量source_file是一个文件的绝对路径,container_name是容器的名称,问题是这段代码在所有情况下都能正常工作,除了路径上有空格的情况。
例如输入:-

let source_file = "C:\Program Files (x86)\Microsoft Visual Studio\2021\file";

在使用上面的输入运行程序时,我在终端上得到以下消息,并且文件没有被复制到容器中。

`"docker cp" requires exactly 2 arguments`.

有没有办法修改输入端的输入文件路径,使docker cp通过上面的程序在Windows中接受文件路径中的空格?

4xrmg8kj

4xrmg8kj1#

如果不通过cmd传递,它相对简单,因为cmd没有做什么,而且会使事情变得复杂:

Command::new("docker")
        .arg("cp")
        .arg(source_file) // might need `.to_string()` on `source_file` if it doesn't implement `AsRef<OsStr>` already
        .arg(format!("{container_name}:/home/"))
        .spawn()
        .expect("command failed")

相关问题