【问题标题】:Docker volumes newbie questionsDocker 卷新手问题
【发布时间】:2020-11-10 20:23:21
【问题描述】:

对于一项服务,我将卷定义为(我的 yml 文件的摘录)

services:
   wordpress:
      volumes:
         - wp_data:/var/www/html
      networks:
            - wpsite
networks: 
    wpsite:
volumes:
   wp_data:
      driver: local

我知道在 Windows 10 文件系统上,WP 卷对我来说不容易看到,因为它们将存在于 linux VM 中。或者,我必须提供一个路径参数才能查看我的 WP 安装,例如

volumes:
   - ./mysql:/var/lib/mysql

但我的问题是“驱动程序:本地”选项的意义何在,这是默认值吗?我已经尝试使用 & 不使用此选项,但看不出有什么区别。

其次,这是做什么的?在我的 yml 文件中,我已将其注释掉,我看不到任何不良影响!?

networks: 
    wpsite:

【问题讨论】:

  • 启动容器后可以执行容器并查找目录结构,你会发现driver: local的使用差异
  • 如果您只删除networks: 部分,您应该会收到类似Service wordpress uses an undefined network 的错误。如果您从服务中删除 networks: 部分以及网络,则服务将使用 default 网络,这基本上会导致您获得与使用没有任何配置的虚拟 wpsite 网络相同的结果,仅使用不同的名称(wpsite 而不是默认名称)

标签: docker docker-compose volumes


【解决方案1】:

第一个问题:
--driver-d 选项默认为本地。 driver: local 是多余的。在 Windows 上,本地驱动程序不支持任何选项。如果你在 Linux 机器上运行 docker,你会有一些选择:官方文档在这里 - https://docs.docker.com/engine/reference/commandline/volume_create/

第二个问题:
networks:/volumes:/services: 的每个部分中,您基本上都声明了部署所需的资源。
也就是说,用虚拟机打个比方,你可以这样想:你需要创建一个名为wp_data的虚拟磁盘和一个名为wpsite的虚拟网络。
然后,您希望您的wordpress 服务将wp_data 磁盘挂载到/var/www/html 下并连接到wpsite 子网。

您可以使用以下 docker 命令显示您的 compose 文件在后台创建的资源:
docker ps - 显示容器
docker volume ls - 显示 docker 卷
docker network ls - 显示 docker 网络

提示:一旦你创建了一个网络或一个卷,除非你手动删除它,它不会被自动销毁。您可以手动清理资源并通过从 compose 文件中删除/添加更多资源来自己试验。


已更新以回答评论中的问题:
如果您在 Windows 主机上运行 docker,您可能启用了 hyper-v。这允许 Windows 创建一个 Linux 虚拟机,您的 docker 引擎在其上运行。
安装 docker 引擎后,docker 可以创建“虚拟资源”,例如虚拟网络、虚拟磁盘(卷)、容器(人们经常将容器与 VM 进行比较)、服务、容器等。

让我们看看您的撰写文件中的以下部分:

volumes:
   wp_data:
      driver: local

这将创建一个由 docker 管理的虚拟磁盘,名为 wp_data。该卷不是直接在您的 Windows 主机文件系统上创建的,而是在您的 Windows 主机上运行的 HyperV 之上运行的 Linux VM 内创建的。如果您想确切地知道在哪里,您可以执行docker inspect <containerID> 并查找您在该容器上的挂载,或者执行docker volume ls 然后docker volume inspect <volumeID> 并查找密钥“Mountpoint”以获取实际位置。

【讨论】:

  • 不确定我是否关注,让我看看。所以WP服务会在Win10的linux VM中挂载wp_data卷。使用命名网络 wpsitewp_data 将链接到 /var/www/html。我理解对了吗?
  • 我更新了答案。希望这能回答您关于如何在 Windows 上运行的 Docker 上创建卷的问题
  • 是的,谢谢你澄清了这一点,我觉得我更关心每行正在做什么。我在学习 docker 上投入了大量时间,即观看 YT 视频,我发现你必须这样做才能获得知识的增量,因为没有一个消息来源能解释这一切。所以感谢你在我的 Docker 之旅中帮助我 :)
猜你喜欢
  • 2015-11-15
  • 2021-01-04
  • 1970-01-01
  • 2019-06-03
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2020-03-27
相关资源
最近更新 更多