当前位置: 代码网 > 服务器>服务器>云虚拟主机 > docker目录挂载的新语法小结

docker目录挂载的新语法小结

2025年02月14日 云虚拟主机 我要评论
这两种挂载目录和文件的写法有什么不同吗?--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf-v /path-on-ho

这两种挂载目录和文件的写法有什么不同吗?

--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 容器中,但它们之间有一些重要的区别。具体来说:

1. --mount 和 -v 的区别:

–mount 语法:

--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf
  • –mount 是 docker 1.13 版本及以后引入的标准语法,提供了更为灵活、清晰和功能强大的挂载选项。
  • 它的语法要求显式指定挂载的类型(type=bind),源路径(src)和目标路径(dst)。
  • –mount 语法更具可读性,并且适用于 docker 的各种类型的挂载(bind、volume、tmpfs)。

-v 语法:

-v /path-on-host-machine/my.cnf:/etc/my.cnf
  • -v(或者 --volume)是 docker 的早期语法,虽然它也可以用于挂载本地文件(bind 类型),但相对于 --mount 来说,它的功能上有一些局限。
  • -v 更简洁,但不如 --mount 语法那么灵活,因为它不要求你明确指定挂载类型,默认是 volume 类型,且不那么清晰。

2. 区别的关键点:

  • 语法和清晰度:

  • –mount 语法需要你显式地指定挂载类型(bind 或 volume 等),并且通过 src 和 dst 来明确源路径和目标路径。

  • v 语法更加简洁,但是没有显示地声明挂载类型(默认是 volume),并且不那么直观。

  • 功能灵活性:

  • –mount 提供了更强的灵活性,支持 bind、volume 和 tmpfs 类型的挂载,并且能够更好地支持容器间的不同挂载方式。

  • -v 只支持 volume 和 bind 类型的挂载,而且无法像 --mount 那样为挂载指定更多的细节和配置(如只读挂载、挂载选项等)。

  • 一致性:

  • –mount 是更现代和一致的方式,推荐在新的 docker 版本中使用,因为它提供了更多的选项和清晰的语法。

  • -v 仍然被广泛使用,尤其在旧代码或一些简化场景中,但相较于 --mount 在一些复杂场景下会显得不够灵活。

3. -v 对 bind 挂载的支持:

实际上,-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。

4. 其他附加选项:

  • 使用 --mount 时,能更好地支持附加的选项,例如:
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf,readonly

上述命令会让挂载的文件成为只读,这在 -v 语法中不能直接指定。

总结:

  • 功能上:两者的作用是一样的,都是将主机上的文件挂载到容器中。

  • 语法上:–mount 提供了更清晰、灵活的语法,推荐用于复杂的挂载场景,而 -v 是简化语法,适用于简单场景。

  • 使用建议:对于更复杂的挂载需求(例如需要指定挂载类型、只读挂载等),建议使用 --mount。对于简单的文件或目录挂载,-v 也足够简洁有效。

到此这篇关于docker目录挂载的新语法小结的文章就介绍到这了,更多相关docker目录挂载内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com