问题描述
主机卷不从容器>主机复制数据。主机卷安装在容器/映像中的内容之上,因此可以有效地用主机中的内容替换容器中的内容。
标准或“命名”卷 将
容器数据中的现有数据复制到新卷中。这些卷是通过VOLUME
在Dockerfile
中使用命令启动容器或通过docker命令创建的
docker run -v myvolume:/var/whatever myimage
默认情况下,这是存储在“本地”卷中的数据,“本地”在Docker主机上。就您而言,这是在运行Docker的VM而非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
然后,您可以将填充的主机目录映射到容器中,它们将具有映像随附的默认数据。
解决方法
我对Docker中的整个数据量过程有疑问。基本上,这里有两个Dockerfile及其各自的运行命令:
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守护程序将目录从容器装载到主机的位置。因此,我可以根据需要编辑配置文件,它们将在重新启动后保留在容器中。
但是,对于第二个dockerfile和命令,它似乎不起作用。我知道,如果您去查阅Docker
Volume文档,它说卷安装只打算从主机到容器单向进行,但是Transmission容器如何按预期工作,而Nginx容器却没有?
P:S-我正在将 Microsoft Windows 10 Pro Build 14393 作为主机运行,并将 版本17.03.0-ce-
win1(10300)通道:beta 作为我的Docker版本。
编辑-
只是为了澄清。我正在尝试将文件从Nginx容器内部发送到主机。在这方面,第一个容器(传输)通过使用数据量来工作。但是,对于第二个容器(Nginx),它不想将已安装目录中的文件从容器内部复制到主机。尽管其他所有工作都正常,但确实可以成功启动。