如何将文件从主机复制到 Docker 容器?

dockeroperating systemopen source更新于 2026/2/14 7:07:17

如果您正在运行 Docker 容器,并且想要将文件从主机复制到 Docker 容器,则有几种方法可以实现。一种方法是在 Dockerfile 中使用 ADD 或 COPY 指令,并在启动容器时传递要放入容器的文件路径。但是,如果您已经有一个正在运行的容器,会发生什么情况?为了包含一个小文件而反复构建相同的镜像是不可行的。

为了避免这种情况,Docker 允许我们使用几种不同的方法和命令,在从镜像创建容器后将文件从主机复制到容器。在本文中,我们将讨论不同的方法。让我们逐一了解一下。

方法 1. 使用 Docker cp 命令

Docker cp 命令可用于将文件和目录从主机复制到容器,反之亦然。要将单个文件从主机复制到容器,可以使用以下命令。

$ docker cp file.txt container-name:/path/to/copy/file.txt

您也可以使用容器 ID。要查找容器的名称或 ID,您可以列出所有容器。

$ docker ps -a

如果您想将主机中某个文件夹中的多个文件复制到容器,可以使用以下命令。

$ docker cp src/directory/.container-name:/target/directory/location

方法 2. 挂载主机目录

另一种将文件从主机复制到容器的方法是在创建容器时将主机上的目录挂载到 Docker 容器。这样,您就可以通过将文件复制到主机中已挂载的文件夹来直接复制任何文件或目录。让我们看看如何操作。

$ docker run -d -v /path/to/directory/in/host:/mount --name=<container-name> <image name>

您可以在主机上运行此命令来运行容器,并使用 -v 选项将主机中的目录挂载到容器。您复制到此目录的任何文件都可以在容器内的挂载目录中访问。

现在,让我们尝试使用 Docker exec 命令运行 bash 命令来访问容器的 bash。

$ docker exec -it <container-name> bash

现在您可以访问容器的 bash,可以运行以下命令复制文件。

$ cp /mnt/sourcefile /path/to/destfile

方法 3. 使用 Cat 命令

创建容器时复制文件的另一种相当简单的方法是将 cat 命令用作 Docker run 命令的参数。

$ docker run -i ubuntu /bin/bash -c 'cat > filetobecopied' <待复制的文件

如果您已经有一个正在运行的 Docker 容器,您可以将 Docker exec 命令与相同的 cat 命令一起使用。

$ docker exec -it <container-name> bash -c 'cat > /path/to/docker-container/file.txt' <
/path/to/host-machine/file.txt

方法 4. 使用 tar 命令

您也可以使用 tar 命令将文件转换为 tarball 文件,然后使用 Docker exec 命令将其通过管道传输。以下命令将 file.txt 文件复制到容器内的 /usr 目录。

$ tar -c file.txt | docker exec -i docker-container /bin/tar -C /usr -x

总而言之,本文讨论了将文件从主机复制到 Docker 容器的 4 种不同方法。我们了解了如何将文件从主机复制到正在运行的容器以及尚未创建的容器。我们使用了 Docker cp、Docker exec 等工具来完成此任务。最佳方法是使用传统的 Docker cp 命令。您可以根据自己的需求和用例选择最佳的复制文件方式。


相关文章