Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行docker映像时使用mount bind与使用卷的优缺点_Docker - Fatal编程技术网

运行docker映像时使用mount bind与使用卷的优缺点

运行docker映像时使用mount bind与使用卷的优缺点,docker,Docker,到目前为止,当我运行docker images时,我通常会: docker run -d -it --name test \ -v $(pwd)/target:/app/ theimage 然而,我现在正在检查另一个人的docker代码,我发现 docker run -d -it --name test \ --mount type=bind,source=$(pwd)/target.target=/app \ theimage 我读到,两者的基本功能是相似的。 我想听

到目前为止,当我运行docker images时,我通常会:

docker run -d -it --name test \
-v $(pwd)/target:/app/
theimage
然而,我现在正在检查另一个人的docker代码,我发现

   docker run -d -it --name test \
    --mount type=bind,source=$(pwd)/target.target=/app \
    theimage
我读到,两者的基本功能是相似的。
我想听听有经验的Docker用户的意见,他们之间有什么不同,为什么我更喜欢一个而不是另一个。

他们是相同的,只是
--mount
选项仅在Docker的较新版本中,而且语法更为详细。原则上支持更多选项,因此您可以为自动创建的命名卷指定标签等设置,但我从未特别需要这些设置


我通常使用
-v
选项(或)。它更方便一点,而且我不需要额外的选择。对于您所展示的简单绑定挂载来说,这是双倍正确的

(但我不建议使用绑定挂载覆盖整个
/app
目录。这意味着在部署映像之前,您永远不会运行内置在映像中的代码,这会导致生产失败。您可以使用本地解释器进行开发,使用Docker进行部署;这没有错。)感谢您的回答。很抱歉,我无法理解您的评论。您能详细说明一下吗?Docker映像通常应该是自包含的:如果您要部署映像,它包含所有应用程序代码及其依赖项,并且您不需要单独复制应用程序代码(再次)到目标系统。但是在所有
/app
上绑定挂载往往会绝对隐藏Dockerfile所做的一切,因此您在开发中运行的容器与您最终可能在生产中运行的内容无关。这否定了使用Docker的一个主要目标,而且会带来相当不方便的开发环境我不喜欢它。