我正在尝试为我们使用的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>:<路径>