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

我对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),它不想将已安装目录中的文件从容器内部复制到主机。尽管其他所有工作都正常,但确实可以成功启动。

马特

主机卷不从容器>主机复制数据。主机卷安装在容器/映像中的内容之上,因此它们可以用主机中的内容有效地替换容器中的内容。

标准或“命名”卷 容器数据中的现有数据复制到新卷中。这些卷是通过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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Ubuntu上运行docker:无法从容器写入已安装的主机卷

如何在Docker Compose中将主机目录挂载为卷

在构建期间如何将主机卷挂载到Dockerfile中的Docker容器中

孤立的Docker挂载主机卷?

如何将Docker容器卷挂载到其他路径?

如何将Docker容器中的目录挂载到主机?

如何从容器中列出Docker安装的卷

如何将Docker容器中的目录挂载到主机?

如何将文件从docker中的卷挂载到容器?

将Docker卷挂载到主机路径

如何将卷从主机装载到容器

将单个文件从NFS docker卷挂载到容器中

如何将主机目录挂载到正在运行的Docker容器中

如何在Docker容器中从主机查找卷文件?

Docker / Windows Container:如何在Windows 2016上将主机文件夹作为数据卷挂载

将NFS目录挂载到与Docker共享的主机卷中

docker在debian wheezy 7.8中将主机的/目录挂载到容器的/

Docker如何将卷从Docker Client挂载到在Docker主机上运行的Docker容器中?

如何在Docker容器中获取主机的挂载信息

如何在Linux主机上的Docker容器内挂载目录

如何将主机代码挂载到 docker 中的容器?

如何使用 Ansible Playbook 将 nginx docker 容器挂载到主机中?

docker(Mac/Windows):如何从容器访问主机服务?

从容器到主机 docker-compose 的卷共享

如何在 EC2 实例中将增加的卷挂载到 root

如何在 Kubernetes 中将卷挂载到 Pod

卷如何从容器挂载到主机,反之亦然?

Docker 卷挂载到 kubernetes 卷

如何在没有 root 权限的情况下删除主机上挂载的 Docker 卷目录