如何在Docker中将卷从容器装载到主机?

我有一个关于Docker中整个数据量过程的问题。这里基本上有两个DockerFile及其各自的运行命令:

Dockerfile 1-

通过Debian进行传输
#
#版本2.92
来自debian:测试
运行apt获取更新\
&amp&apt get-y安装nano\
&amp&apt get-y安装传输守护程序传输公共传输cli\
&amp&mkdir-p/transmission/config/transmission/watch/transmission/download
入口点[“传输守护程序”,“–前台”]
CMD[“–config dir”、“/transmission/config”、“–watch dir”、“/transmission/watch”、“–download dir”、“–transmission/download”、“–allowed”、“*”、“–no blocklist”、“–no auth”、“–no dht”、“–no lpd”、“–encryptived preferred ency”]

命令1-

docker run--name transmission-d-p 9091:9091-vc:\path\to\config:/transmission/config-vc:\path\to\watch:/transmission/watch-vc:\path\to\download:/transmission/download transmission

Dockerfile 2-

Debian上的Nginx
#
#版本1.10.3
来自debian:测试
运行apt获取更新\
&amp&apt get-y安装nano\
&amp&apt get-y安装nginx
曝光80443
CMD[“nginx”,“-g”,“守护进程关闭;”]

命令2-

docker run——名称nginx-d-p80:80-vc:\path\to\config:/etc/nginx-vc:\path\to\html:/var/www/html nginx

所以,奇怪的是,第一个dockerfile和命令按预期工作。docker守护进程将目录从容器装载到主机。因此,我可以随心所欲地编辑配置文件,它们将在重新启动时保存到容器中

然而,对于第二个dockerfile和命令,它似乎不起作用。我知道如果你去Docker Volume文档,它会说卷装载只是单向的,从主机到容器,但是为什么Transmission容器能按预期工作,而Nginx容器却不能

p:S-我正在运行Microsoft Windows 10 Pro Build 14393作为我的主机,17.03.0-ce-win1(10300)Channel:beta作为我的Docker版本

编辑-只是为了澄清。我正在尝试将文件从Nginx容器中获取到主机。第一个容器(传输)通过使用数据卷在这方面工作。但是,对于第二个容器(Nginx),它不希望将装载目录中的文件从容器内部复制到主机。尽管其他一切都在运行,但它确实成功地启动了

主机卷不从容器>主机复制数据。主机卷装载在容器/映像中的内容的顶部,因此它们有效地将容器中的内容替换为主机上的内容

标准或“命名”卷将现有数据从容器映像复制到新卷中。这些卷是通过在其Dockerfile中使用VOLUME命令启动容器或通过docker命令创建的

docker run-v myvolume:/var/myimage

默认情况下,这是存储在Docker主机上的“本地”卷中的数据。在您的情况下,它位于运行Docker的VM上,而不是您的Windows主机上,因此您可能无法轻松访问它

您可能将空白目录中的传输自动生成文件误认为是副本

如果确实需要保留VM主机>容器映射,则可能必须手动复制数据:

docker create——名称nginxcopy nginx
docker cp nginxcopy:/etc/nginx C:\path\to\config
docker cp nginxcopy:/var/www/html C:\path\to\html
docker rm nginxcopy

然后,您可以将填充的主机目录映射到容器中,它们将具有图像附带的默认数据

发表评论