我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
当前回答
从容器复制到主机目录
docker cp [container-name/id]:./app/[index.js] index.js
(假设您在dockerfile中创建了一个workdir/app)
从主机复制到容器
docker cp index.js [container-name/id]:./app/index.js
其他回答
这是一个联机程序,用于在运行tomcat容器时复制单个文件。
docker run -v /PATH_TO_WAR/sample.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat
这将把war文件复制到webapps目录,让你的应用程序立即运行。
如果主机是CentOS或Fedora,则在/var/lib/docker/aufs中没有代理,但它位于/proc:
cp -r /home/user/mydata/* /proc/$(docker inspect --format "{{.State.Pid}}" <containerid>)/root
此cmd将数据目录的所有内容复制到id为“contained”的容器的/。
使用Docker 1.8,Docker cp能够将文件从主机复制到容器。请参阅Docker博客文章Announcing Docker 1.8:内容信任、工具箱以及注册表和编排更新。
这是将数据从Docker复制到Host的命令:
docker cp container_id:file path/filename /hostpath
docker cp a13fb9c9e674:/tmp/dgController.log /tmp/
以下是将数据从主机复制到docker的命令:
docker cp a.txt ccfbeb35116b:/home/
将文件复制到正在运行的容器中的另一个解决方案是使用tar:
tar -c foo.sh | docker exec -i theDockerContainer /bin/tar -C /tmp -x
将文件foo.sh复制到容器的/tmp中。
编辑:删除reduntant-f,感谢Maartens的评论。