我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。

我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。

我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。

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


当前回答

如果像我这样的人不清楚@h3nrik答案中的mycontainer是什么意思,它实际上是容器id。为了将/app/example_scenes/1440p60中的WarpSquare.mp4文件从退出的docker容器复制到当前文件夹,我使用了这个。

docker cp `docker ps -q -l`:/app/example_scenes/1440p60/WarpSquare.mp4 .

其中docker ps-q-l提取最后退出实例的容器id。如果它不是已退出的容器,您可以通过docker容器ls或docker ps获取它

其他回答

将文件复制到正在运行的容器中的另一个解决方案是使用tar:

tar -c foo.sh | docker exec -i theDockerContainer /bin/tar -C /tmp -x

将文件foo.sh复制到容器的/tmp中。

编辑:删除reduntant-f,感谢Maartens的评论。

创建一个新的dockerfile并使用现有图像作为基础。FROM myName/myImage:最新添加myFile.py bin/myFile.py然后构建容器:码头建造。

这是将数据从Docker复制到Host的命令:

docker cp container_id:file path/filename /hostpath

docker cp a13fb9c9e674:/tmp/dgController.log /tmp/

以下是将数据从主机复制到docker的命令:

docker cp a.txt ccfbeb35116b:/home/

将文件复制到我找到的容器的最佳方法是使用dockerrun命令的-v选项在主机上安装目录。

许多发现这个问题的人实际上可能会在创建Docker映像时遇到将文件复制到Docker映像中的问题(我确实这样做了)。

在这种情况下,您可以使用Dockerfile中的COPY命令来创建图像。

请参阅文档。