如何在主机和Docker容器之间复制文件
时间:2020-03-05 15:26:33 来源:igfitidea点击:
Docker CP命令是一个方便的实用程序,允许复制容器和主机系统之间的文件和文件夹。
如果要将文件从主机系统复制到容器,则应使用这样的Docker CP命令:
docker cp host_source_path container:destination_path
如果要将文件从容器复制到主机系统,请使用此命令:
docker cp container:source_path host_destination_path
这可能看起来有点恐吓,所以让我通过一些实际的例子向我们解释。
Docker CP命令示例
在我的教程中,我在Ubuntu上安装了Docker。
但所有运行Docker的分发的步骤都是相同的。
我希望你知道如何运行Docker容器,因为你需要一个正在运行的容器。
首先使用Docker PS命令列出运行容器:
Hyman@theitroad:~$sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8353c6f43fba 775349758637 "bash" 8 seconds ago Up 7 seconds ubu_container
我们需要知道容器ID或者容器名称。
在我的情况下,Docker容器名称是UBU_Container。
并且容器ID为8353C6F43FBA。
如果要验证文件已成功复制,则可以按以下方式输入容器,然后使用常规Linux命令:
docker exec -it ubu_container bash
1.将文件从主机系统复制到Docker容器
使用Docker CP复制类似于Linux中的Copy命令。
我要将名为A.Py的文件复制到容器中的Home/dir1目录。
docker cp a.py ubu_container:/home/dir1
如果文件已成功复制,则不会在屏幕上看到任何输出。
如果目标路径不存在,则会看到错误:
Hyman@theitroad:~$sudo docker cp a.txt ubu_container:/home/dir2/subsub Error: No such container:path: ubu_container:/home/dir2
如果目标文件已存在,则会在没有任何警告的情况下覆盖它。
我们也可以使用容器ID而不是容器名称:
docker cp a.py 8353c6f43fba:/home/dir1
2.将文件从Docker容器复制到主机系统
Docker CP命令仅在主机系统中运行。
我们无法在容器中运行它。
即使我们要将文件复制到Docker容器到主机系统,我们也需要在主机系统中并以下列方式使用命令:
sudo docker cp ubu_container:/home/dir1/new.txt /home/igi
3.复制容器和主机系统之间的目录
如果要使用CP命令复制Linux中的目录,则必须使用递归选项-r。
但在Docker CP命令中,我们无需这样的选项。
同样的命令用于复制两个文件和文件夹。
docker cp /home/igi/my_dir ubu_container:/home sudo docker cp ubu_container:/home/my_dir /home/igi
4.使用原始属性复制文件和目录
使用选项-a复制时,可以使用存档模式。
有了这个,我们可以复制原始文件的所有文件权限,UID和GID。
docker cp -a host_source_path container:destination_path
docker cp -a container:source_path host_destination_path