我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
当前回答
有一件事我试过了
启动docker容器后,如果在该容器下创建任何文件;您可以从docker主机的以下位置轻松访问该文件:-
cd/var/lib/dodocker/aufs/container/container_id/tmp
再试一次!
其他回答
以下是一种相当丑陋的方法,但它确实有效。
docker run -i ubuntu /bin/bash -c 'cat > file' < file
将文件复制到正在运行的容器中的另一个解决方案是使用tar:
tar -c foo.sh | docker exec -i theDockerContainer /bin/tar -C /tmp -x
将文件foo.sh复制到容器的/tmp中。
编辑:删除reduntant-f,感谢Maartens的评论。
解决方案如下所示,
从Docker外壳,
root@123abc:/root# <-- get the container ID
来自主机
cp thefile.txt /var/lib/docker/devicemapper/mnt/123abc<bunch-o-hex>/rootfs/root
文件应直接复制到文件系统中容器所在的位置。
有一件事我试过了
启动docker容器后,如果在该容器下创建任何文件;您可以从docker主机的以下位置轻松访问该文件:-
cd/var/lib/dodocker/aufs/container/container_id/tmp
再试一次!
实现这一点的最简单的方法是,
查找容器iddocker cp<文件名><容器id>:<路径>