【发布时间】:2021-01-13 19:55:01
【问题描述】:
我对 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 文档,它说卷安装只是为了单向,从主机到容器,但是传输容器如何按预期工作,而 Nginx 容器没有?
P:S - 我正在运行 Microsoft Windows 10 Pro Build 14393 作为我的主机和 Version 17.03.0-ce-win1 (10300) Channel: beta 作为我的 Docker 版本。
编辑 - 只是为了澄清。我正在尝试将文件从 Nginx 容器内部获取到主机。第一个容器(传输)通过使用数据卷在这方面起作用。但是,对于第二个容器(Nginx),它不想将挂载目录中的文件从容器内部复制到主机。其他一切正常,但它确实成功启动了。
【问题讨论】:
-
什么“不起作用”?容器无法启动?本地文件是否出现在挂载目录中但未更新?挂载的目录中是否有任何内容?
-
@Matt 我正在尝试将文件从 Nginx 容器内部获取到主机。第一个容器(传输)通过使用数据卷在这方面起作用。但是,对于第二个容器(Nginx),它不想将挂载目录中的文件从容器内部复制到主机。其他一切正常,但它确实成功启动了。
-
请用这些信息更新您的问题。
标签: docker