Docker 里面的文件怎么复制出来
在使用 Docker 运行容器的过程中,有时候我们需要将容器内的文件复制到宿主机上,或者从一个容器中复制文件到另一个容器中。这种情况下,我们可以使用 Docker 提供的两个命令 docker cp
和 docker 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
命令更强大,它可以自动解