23人参与 • 2025-02-14 • 云虚拟主机
这两种挂载目录和文件的写法有什么不同吗?
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf -v /path-on-host-machine/my.cnf:/etc/my.cnf
解答:
这两种写法在功能上有相似之处,都是将主机上的文件或目录挂载到 docker 容器中,但它们之间有一些重要的区别。具体来说:
–mount 语法:
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf
-v 语法:
-v /path-on-host-machine/my.cnf:/etc/my.cnf
语法和清晰度:
–mount 语法需要你显式地指定挂载类型(bind 或 volume 等),并且通过 src 和 dst 来明确源路径和目标路径。
v 语法更加简洁,但是没有显示地声明挂载类型(默认是 volume),并且不那么直观。
功能灵活性:
–mount 提供了更强的灵活性,支持 bind、volume 和 tmpfs 类型的挂载,并且能够更好地支持容器间的不同挂载方式。
-v 只支持 volume 和 bind 类型的挂载,而且无法像 --mount 那样为挂载指定更多的细节和配置(如只读挂载、挂载选项等)。
一致性:
–mount 是更现代和一致的方式,推荐在新的 docker 版本中使用,因为它提供了更多的选项和清晰的语法。
-v 仍然被广泛使用,尤其在旧代码或一些简化场景中,但相较于 --mount 在一些复杂场景下会显得不够灵活。
实际上,-v 语法也可以用来绑定挂载,和 --mount 的 type=bind 一样,例如:
-v /path-on-host-machine/my.cnf:/etc/my.cnf
这条命令会将主机路径 /path-on-host-machine/my.cnf 挂载到容器的 /etc/my.cnf,等效于 --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf。
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf,readonly
上述命令会让挂载的文件成为只读,这在 -v 语法中不能直接指定。
功能上:两者的作用是一样的,都是将主机上的文件挂载到容器中。
语法上:–mount 提供了更清晰、灵活的语法,推荐用于复杂的挂载场景,而 -v 是简化语法,适用于简单场景。
使用建议:对于更复杂的挂载需求(例如需要指定挂载类型、只读挂载等),建议使用 --mount。对于简单的文件或目录挂载,-v 也足够简洁有效。
到此这篇关于docker目录挂载的新语法小结的文章就介绍到这了,更多相关docker目录挂载内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论