docker容器的文件拷贝方式小结
一、已运行的容器拷贝方式
使用 docker cp
命令将文件从物理机复制到运行中的 Docker 容器中,或者从 Docker 容器中复制文件到物理机上。
例如,要将物理机上的文件 test.txt
复制到名为 mycontainer
的容器 /app
目录中,可以使用以下命令:
从主机拷贝文件到容器中:
docker cp test.txt mycontainer:/app/test.txt
其中,test.txt
是要复制的本地文件,mycontainer
是容器的名称,/app/test.txt
是容器的文件路径。
如果要将 Docker 容器中的文件复制到物理机上,可以使用以下命令:
从容器中拷贝文件到主机中:
docker cp mycontainer:/app/test.txt test.txt
这条命令实现了将容器 mycontainer
中的 /app/test.txt
文件复制到本地目录下的 test.txt
文件中。
需要注意的是,docker cp
命令需要在 Docker 版本 1.8 或更高版本中才能使用。另外,在使用时需要确保对要复制的文件拥有足够的读写权限。
二、构建dockerfile时拷贝
Dockerfile 中可以直接使用 COPY
或 ADD
指令将本地文件复制到镜像中,原理是 Docker 在构建镜像时,会先将本地文件复制到一个临时目录中,然后再将该目录添加到镜像的文件系统中。
当使用 COPY
或 ADD
指令时,Docker 构建引擎会根据指定的源路径从构建上下文中查找相应的文件或目录,并将其复制到镜像中的目标路径中。如果源路径是一个目录,则目标路径必须以 /
结尾,否则会导致 COPY 或 ADD 操作失败。
例如,在下面的 Dockerfile 中:
FROM nginx:latest COPY index.html /usr/share/nginx/html/ ADD static.tar.gz /usr/share/nginx/html/
这个 Dockerfile 指定了 nginx:latest
作为基础镜像,然后将本地目录中的 index.html
文件复制到镜像中的 /usr/share/nginx/html/
目录中。在构建镜像时,Docker 构建引擎会先将 index.html
复制到一个临时目录中,然后再将该目录添加到镜像的文件系统中,以此来实现将文件从本地复制到镜像中。
因此,直接在 Dockerfile 中使用 COPY
或 ADD
指令来将本地文件复制到容器中是可行的。而且,这样做还可以自动化地将文件复制到镜像中,使得在创建新容器时可以直接使用该镜像,并且不需要再手动复制文件。
附:Docker容器与本地文件相互拷贝
Docker容器中的文件可以与本地进行共享。
1、Docker容器中的文件拷贝至本地
#格式 #docker cp CONTAINER ID:容器目录 本地目录 #示例 docker ps -a #查看本地容器ID sudo docker cp 52ea915e6527:/aha /home/aha2复制
2、本地文件拷贝至容器
#格式 #docker cp 本地路径 CONTAINER ID:容器目录 #示例 docker cp license.dat 52ea915e6527:/home
注意:
1、此命令是在容器外使用(shell或cmd)。
2、两个命令中容器 ID可以与容器name相互替换使用。
如下图所示,CONTAINER ID和NAMES 都可以在命令中使用。
总结
到此这篇关于docker容器的文件拷贝方式的文章就介绍到这了,更多相关docker容器文件拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论