Docker是一种开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机上。在Docker中,我们经常需要将主机上的文件或目录挂载到容器内部。这时候我们就会使用-v参数或者--mount参数。

-v和--mount都是Docker运行命令(docker run)中用于数据持久化和文件共享的重要选项。它们都可以实现在主机与容器之间共享数据。

首先来看看-v参数。-v 参数有着长久以来被广泛使用和接受度很高,在早期版本中就已经存在了。-v 参数格式如下:

docker run -v /host/directory:/container/directory -dit image_name

这里 /host/directory 是主机上你想要挂载进去 Docker 容器内部目录路径, 而 /container/directory 则是 Docker 容器内部你想要映射出来给外界访问路径。

然后我们再看一下 --mount 参数, --mount 是一个更新且更强大、更易于理解、易于使用且功能强大选项. 该选项在 Docker 17.06 版本才开始出现,并且推荐新用户使用此命令进行挂载操作.

--mount 的基本格式如下:

docker run --mount type=bind,source=/host/directory,target=/container/directory -dit image_name

这里的 source 是主机上你想要挂载进去 Docker 容器内部目录路径, 而 target 则是 Docker 容器内部你想要映射出来给外界访问路径。

那么,-v 和 --mount 到底有什么区别呢?

  1. 语法复杂性:-v 的语法相对简单,但是不够明确,容易引起混淆。而 --mount 的语法虽然稍微复杂一些,但是更加清晰明确。
  2. 功能性:--mount 功能更加强大。它不仅支持 bind mounts(绑定挂载),还支持 volume mounts(卷挂载)和 tmpfs mounts(临时文件系统挂载)。而 -v 只支持 bind mounts 和 volume mounts。
  3. 错误提示:如果指定的源目录不存在,在使用 -v 参数时 Docker 会自动创建该目录。而在使用 --mount 参数时,Docker 不会自动创建源目录,并且如果源目录不存在会给出错误提示。
  4. 可读性:--mount 的可读性更强。在查看容器信息时(docker inspect),使用-v参数的信息显示较为简洁,并不能清晰地看到所有详细信息;而-- mount参数则可以显示完整详细的配置信息。

总结来说,在新的Docker版本中,推荐使用 --mount 参数,因为它提供了更强大的功能和更好的用户体验。但是如果你是在旧版本Docker中工作,或者你已经习惯了 -v 参数,那么继续使用 -v 也没有问题。

云服务器推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 10 月 07 日
如果觉得我的文章对你有用,请随意赞赏