我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。
我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。
我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。
如何将文件从主机复制到容器?
当前回答
在我看来,您不必复制图像中的文件,但可以对文件使用GIT或SVN,然后设置与本地文件夹同步的卷。在运行容器时使用脚本,如果不从GIT存储库复制数据,则可以检查本地文件夹中是否已存在数据。这使你的形象非常轻盈。
其他回答
在容器外部使用以下命令,我可以将文件从主机复制到容器。
487b00c94dd4 = Container ID
D:\demo\demo.tar= Source Url
/myfolder= Container Url
docker cp "D:\demo\demo.tar" 487b00c94dd4:/myfolder
试试docker cp。
用法:
docker cp CONTAINER:PATH HOSTPATH
它将文件/文件夹从PATH复制到HOSTPATH。
最干净的方法是在启动容器时在容器上装载主机目录:
{host} docker run -v /path/to/hostdir:/mnt --name my_container my_image
{host} docker exec -it my_container bash
{container} cp /mnt/sourcefile /path/to/destfile
真正的交易是:
docker volume create xdata
docker volume inspect xdata
所以你可以看到它的装载点。把你的东西复制到那里然后
docker run --name=example1 --mount source=xdata,destination=/xdata -it yessa bash
其中yessa是图像名称
通常有三种类型:
从容器到主机docker cp container_id:/bar/foo.txt。
docker cp命令也可以双向工作。
从主机到容器docker exec-i container_id sh-c“cat>/bar/foo.txt“</foo.txt文件从主机复制到容器的第二种方法:docker cp foo.txt mycontainer:/foo.txt
从一个容器到一个容器混合1和2docker cp container_id1:/bar/foo.txt。docker exec-i container_id2 sh-c“cat>/bar/foo.txt“</foo.txt文件