我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
当前回答
在docker环境中,所有容器都位于以下目录中:
/var/lib/docker/aufs/必需的docker id/
要将源目录/文件复制到容器的任何部分,请键入给定命令:
sudo cp-r mydir//var/lib/docker/aufs/mnt/required docker-id/mnt/
其他回答
我通常使用以下命令创建python服务器
python-m SimpleHTTPServer
然后使用wget将文件传输到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获取它
容器向上语法:
docker run -v /HOST/folder:/Container/floder
在docker文件中
COPY hom* /myFolder/ # adds all files starting with "hom"
COPY hom?.txt /myFolder/ # ? is replaced with any single character, e.g., "home.txt"
真正的交易是:
docker volume create xdata
docker volume inspect xdata
所以你可以看到它的装载点。把你的东西复制到那里然后
docker run --name=example1 --mount source=xdata,destination=/xdata -it yessa bash
其中yessa是图像名称
tar和dockercp是复制目录中所有内容的好组合。
创建数据卷容器
docker create --name dvc --volume /path/on/container cirros
保留目录层次结构
tar -c -C /path/on/local/machine . | docker cp - dvc:/path/on/container
检查您的工作
docker run --rm --volumes-from dvc cirros ls -al /path/on/container