Docker 提供了两种方式来备份和同步本地机器上的容器数据,即volume和mount。除了我注意到的一些事情之外,两者的行为方式都相同:
好的,所以我们可以说方法论有一些优点和缺点,但在优化方面仍然存在一些分类或差异。
请提供一个解释性的答案。
实际上有三种类型的卷:
卷有源和目标。源标识卷的类型,因此文件/目录的路径(包括前导斜杠)会产生主机卷。如果您不提供来源,您将获得匿名卷。如果您在 Dockerfile 中定义卷,则无法在其中指定源,因此默认情况下 docker 将创建匿名卷,除非您在运行时以其他方式指示它。
对于每种类型,以下是优点/缺点:
如果可能,我使用命名卷。数据的初始化和更好地处理 uid/gid 问题胜过主机卷的便利性。如果我确实需要在 docker 外部直接访问数据,那么我会尝试使用指向绑定安装的命名卷,而不是默认的本地驱动程序设置。一个简单的例子是:
$ docker volume create --driver local \
--opt type=none \
--opt device=/home/user/test \
--opt o=bind \
test_vol
Run Code Online (Sandbox Code Playgroud)
为了定义我的卷,因为您不想在 Dockerfile 中执行此操作,所以我使用 docker-compose.yml 并在其中定义我的卷。如果它是使用集群模式部署的,我将指向一个具有命名卷的 NFS 服务器,以便在容器迁移到不同主机时允许访问数据。否则,它是一个本地命名卷,可以轻松地与 docker-compose 一起使用。
| 归档时间: |
|
| 查看次数: |
12989 次 |
| 最近记录: |