我正在尝试为我们使用的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 cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
目标路径必须预先存在
我在这里尝试了大多数(通过投票)的解决方案,但在docker 17.09(2018年)中不再有/var/lib/docker/aufs文件夹。
这个简单的docker cp解决了这个任务。
docker cp c:\path\to\local\file container_name:/path/to/target/dir/
如何获取container_name?
docker ps
有一个NAMES部分。不要使用aIMAGE。
我只需从主机上直接复制容器所在位置的文件。
例如:
首先查找容器id:
root@**3aed62678d54**:/home#
然后在主机上,假设文件位于主目录中:
root@saasdock:/home/dnepangue# cp cheering_nasa.gif /var/lib/docker/aufs/mnt/**3aed62678d54**a5df47a4a00a58bb0312009c2902f8a37498a1427052e8ac454b/home/
返回容器。。。
root@**3aed62678d54**:/home# ls cheering_nasa.gif
您可以使用以下命令
将文件从主机复制到docker容器docker cp/主机文件container_id:/to_the_place_you_want_the_file_to_be将文件从docker容器复制到主机docker cp container_id:src_path to_the_place_you_want_the_file_to_be
我刚刚开始使用docker来编译VLC,下面是您可以从容器来回复制文件的方法:
su -
cd /var/lib/docker
ls -palR > /home/user/dockerfilelist.txt
在这个txt中搜索一个熟悉的文件,你会得到文件夹,cd作为根目录,瞧!复制所有你想要的。
可能有一个包含“merged”的路径,我猜你想要的是包含“diff”的路径。
此外,如果您退出容器并想回到之前的位置:
docker ps -a
docker start -i containerid
我想这很有用,因为你没有用这样的命令命名任何东西
docker run -it registry.videolan.org:5000/vlc-debian-win64 /bin/bash
当然是黑客的方法,但那又怎么样!