docker run的挂载选项(类型,源,目标)的含义是什么?

时间:2018-09-29 12:09:22

标签: docker

docker run -p 8500:8500 \
    --mount type=bind,source=$(pwd)/models/mnist,target=/models/mnist \
    -e MODEL_NAME=mnist \
    -t tensorflow/serving &

参数--mounttypesourcetarget和符号&在docker中是什么意思或起作用?

我有运行命令docker --helpdocker run --help,但仍然与上面的这些命令混淆。

2 个答案:

答案 0 :(得分:0)

我建议您阅读the docs related to bind mounts来理解带有--mount参数的type=bind选项。

在您的示例中,mount选项仅在主机($(pwd)/models/mnist)和容器(路径/models/mnist)之间共享本地目录。这意味着$(pwd)/models/mnist中位于主机上的所有文件都可以从/models/mnist中的容器中获得。

&与Docker无关,只是launches your command in background。您可以使用docker的-d(守护程序)选项来获得相同的行为。

答案 1 :(得分:0)

对于Docker,安装在容器中的最常见的存储类型为以下三种(取自here):

存储在主机文件系统的一部分中,该文件系统由Docker管理(在Linux上为/var/lib/docker/volumes/)。非Docker进程不应修改文件系统的这一部分。卷是在Docker中持久存储数据的最佳方法。

绑定架可以存储在主机系统上的任何位置。它们甚至可能是重要的系统文件或目录。 Docker主机或Docker容器上的非Docker进程可以随时对其进行修改。

tmpfs挂载仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统中。

因此,通过--mount,您可以以非常方便的方式为这些存储类型设置相关选项:
type字段可以是上述3种类型之一。
source主机文件系统中的挂载点位置 (对于命名卷,这是卷的名称,对于匿名卷,此字段将被省略)。
target是容器内部的安装点位置


请注意,您将在-v中看到使用--volumedocker run标志的许多示例。在Docker 17.06之前,这是官方的方式。

(恕我直言,请使用--mount选项,它可以节省一些调试时间,例如,如果您尝试挂载一个不存在的目录,它将抛出一个错误,而不是--volume,它将创建它。


&符号与Docker无关,它只是用于在后台将您的命令作为守护程序运行。