如何在容器中将容器挂载到Docker中?

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

Dockerfile 1 –

# Transmission over Debian # # Version 2.92 FROM debian:testing RUN apt-get update \ && apt-get -y install nano \ && apt-get -y install transmission-daemon transmission-common transmission-cli \ && mkdir -p /transmission/config /transmission/watch /transmission/download ENTRYPOINT ["transmission-daemon", "--foreground"] CMD ["--config-dir", "/transmission/config", "--watch-dir", "/transmission/watch", "--download-dir", "/transmission/download", "--allowed", "*", "--no-blocklist", "--no-auth", "--no-dht", "--no-lpd", "--encryption-preferred"] 

命令1 –

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

Dockerfile 2 –

 # Nginx over Debian # # Version 1.10.3 FROM debian:testing RUN apt-get update \ && apt-get -y install nano \ && apt-get -y install nginx EXPOSE 80 443 CMD ["nginx", "-g", "daemon off;"] 

命令2 –

 docker run --name nginx -d -p 80:80 -v C:\path\to\config:/etc/nginx -v C:\path\to\html:/var/www/html nginx 

所以,奇怪的是,第一个dockerfile和命令按预期工作。 docker守护进程从容器挂载一个目录到主机。 所以,我可以根据需要编辑configuration文件,并在重新启动时将其保存到容器中。

但是,至于第二个dockerfile和命令它似乎并没有工作。 我知道如果你去Docker卷的文档说,卷装载只是单向的,从主机到容器,但如何传输容器按预期工作,而Nginx容器没有?

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

编辑 – 只是为了澄清。 我试图从Nginx容器内的文件到主机。 第一个容器(Transmission)通过使用数据量在这方面起作用。 但是,对于第二个容器(Nginx),它不希望将容器内安装的目录中的文件复制到主机。 其他一切正在工作,但它成功开始。

主机卷不会从容器>主机复制数据。 主机卷安装在容器/映像的顶部,因此它们可以有效地replace容器中的内容与主机上的内容。

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

 docker run -v myvolume:/var/whatever myimage 

默认情况下,这是存储在“本地”卷中的数据,“本地”在Docker主机上。 在你的情况是在运行Docker的虚拟机,而不是你的Windows主机,所以你可能不容易访问。

你可能会错误的传输自动生成文件在一个空白目录中的副本?

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

 docker create --name nginxcopy nginx docker cp nginxcopy:/etc/nginx C:\path\to\config docker cp nginxcopy:/var/www/html C:\path\to\html docker rm nginxcopy 

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