关于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守护进程将容器中的目录挂载到主机上。所以我可以随意编辑配置文件,并在重新启动时保存到容器中。
然而,对于第二个Dockerfile和命令,它似乎没有正常工作。我知道如果去查看Docker卷文档,会发现卷挂载只能从主机到容器单向传输,但为什么Transmission容器可以按预期工作,而Nginx容器不能呢?
P.S. - 我正在运行Microsoft Windows 10 Pro Build 14393作为我的主机,以及Version 17.03.0-ce-win1 (10300) Channel: beta作为我的Docker版本。
编辑 - 仅澄清一下。我正在尝试将Nginx容器内部的文件复制到主机。第一个容器(Transmission)在这方面起作用,使用数据卷。然而,对于第二个容器(Nginx),它不想将挂载目录中的文件从容器内部复制到主机。但其他所有东西都有效,它成功启动了。