Docker 里面的文件怎么复制出来

在使用 Docker 运行容器的过程中,有时候我们需要将容器内的文件复制到宿主机上,或者从一个容器中复制文件到另一个容器中。这种情况下,我们可以使用 Docker 提供的两个命令 docker cpdocker cp 来实现文件的复制。

使用 docker cp 命令复制文件

docker cp 命令可以将容器内的文件复制到宿主机上,或者将宿主机上的文件复制到容器内。

将容器内的文件复制到宿主机上

要将容器内的文件复制到宿主机上,可以使用以下命令:

docker cp <container_id>:<container_path> <host_path>

其中,<container_id> 是容器的 ID 或者名称,<container_path> 是容器内的文件路径,<host_path> 是宿主机上保存文件的路径。

下面是一个示例,将容器内的 /app/data.txt 文件复制到宿主机的 /tmp 目录下:

docker cp mycontainer:/app/data.txt /tmp/data.txt

将宿主机上的文件复制到容器内

要将宿主机上的文件复制到容器内,可以使用以下命令:

docker cp <host_path> <container_id>:<container_path>

下面是一个示例,将宿主机的 /tmp/data.txt 文件复制到名为 mycontainer 的容器的 /app 目录下:

docker cp /tmp/data.txt mycontainer:/app/data.txt

使用 docker cp 命令复制文件夹

除了复制单个文件,docker cp 命令还支持复制文件夹。

将容器内的文件夹复制到宿主机上

要将容器内的文件夹复制到宿主机上,可以使用以下命令:

docker cp <container_id>:<container_path> <host_path>

其中,<container_path> 是容器内的文件夹路径,<host_path> 是宿主机上保存文件夹的路径。

下面是一个示例,将容器内的 /app/data 文件夹复制到宿主机的 /tmp 目录下:

docker cp mycontainer:/app/data /tmp/data

将宿主机上的文件夹复制到容器内

要将宿主机上的文件夹复制到容器内,可以使用以下命令:

docker cp <host_path> <container_id>:<container_path>

下面是一个示例,将宿主机的 /tmp/data 文件夹复制到名为 mycontainer 的容器的 /app 目录下:

docker cp /tmp/data mycontainer:/app/data

使用 Dockerfile 复制文件

除了使用 docker cp 命令手动复制文件,我们还可以在构建镜像的过程中使用 Dockerfile 来复制文件。

Dockerfile 中,可以使用 COPY 或者 ADD 命令来复制文件或者文件夹。这两个命令的使用方式类似,但有一些区别。

使用 COPY 命令复制文件或文件夹

COPY 命令的语法如下:

COPY <source> <destination>

其中,<source> 是宿主机上的文件或者文件夹路径,<destination> 是容器内的目标路径。

下面是一个示例,将宿主机上的 ./data.txt 文件复制到容器内的 /app 目录下:

COPY ./data.txt /app/

如果要复制文件夹,则需要将 <source> 的路径以 / 结尾,表示复制整个文件夹。

COPY ./data/ /app/data/

使用 ADD 命令复制文件或文件夹

ADD 命令的语法如下:

ADD <source> <destination>

ADD 命令比 COPY 命令更强大,它可以自动解