我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
当前回答
将文件从主机复制到正在运行的容器
docker exec -i $CONTAINER /bin/bash -c "cat > $CONTAINER_PATH" < $HOST_PATH
根据Erik的回答以及Mikl和z0r的评论。
其他回答
将文件从主机复制到正在运行的容器
docker exec -i $CONTAINER /bin/bash -c "cat > $CONTAINER_PATH" < $HOST_PATH
根据Erik的回答以及Mikl和z0r的评论。
在docker环境中,所有容器都位于以下目录中:
/var/lib/docker/aufs/必需的docker id/
要将源目录/文件复制到容器的任何部分,请键入给定命令:
sudo cp-r mydir//var/lib/docker/aufs/mnt/required docker-id/mnt/
我最喜欢的方法:
容器:
CONTAINER_ID=$(docker ps | grep <string> | awk '{ print $1 }' | xargs docker inspect -f '{{.Id}}')
文件.txt
mv -f file.txt /var/lib/docker/devicemapper/mnt/$CONTAINER_ID/rootfs/root/file.txt
or
mv -f file.txt /var/lib/docker/aufs/mnt/$CONTAINER_ID/rootfs/root/file.txt
答案很好,但过于具体。我发现docker ps是获取您感兴趣的容器id的好方法
mount | grep <id>
查看卷的安装位置。那是
/var/lib/docker/devicemapper/mnt/<id>/rootfs/
对我来说,但这可能是一条不同的路径,具体取决于操作系统和配置。现在只需将文件复制到该路径。
使用-v并不总是实用的。
使用Docker 1.8,Docker cp能够将文件从主机复制到容器。请参阅Docker博客文章Announcing Docker 1.8:内容信任、工具箱以及注册表和编排更新。