docker data volume vs mounted host directory
说volumes
应优于bind mounts
我有一个关于这个问题的一些问题。在帖子里说:
When you create a volume, it is stored within a directory on the Docker host
忍耐一下,但我是新来的泊坞窗,我想知道什么是docker host
这里。
它是一台机器,我建立了图像(可能不是)?
它是在图像将要运行的机器?如果是这样,如果我在多台机器上运行的图像会发生什么,它会创建两个独立的卷?
当我有developement
和production
设置,码头工人如何管理两个独立的卷为每个环境?
除了它似乎相当容易失去做,当我使用的数据量docker-compose down
数据,这是第一个障碍,让我毫不犹豫地使用data volumes
,有一个明显的解决方案以缓解这个问题?
这不是一个真正的教义 - 不使用绑定安装。是的,他们可以如已安装不准确(如-v /bin:/var/log
)只要你有内部默认容器root权限损害您的主机的文件系统;此外,他们移植性较差,但它们促进主机和容器之间的文件交换。当您要为您服务提供初始配置,或者把源代码编译成容器,我相信你会喜欢bind mount
,而不是创造和docker volume cp
操作运行的临时容器。此外,你应该总是使用:ro
选项时,可能(只读),以防止容器内的数据修改。
泊坞窗主机 - 这是一台机器(PC),其中泊坞守护进程正在运行。
它是一台机器,我建立了图像(可能不是)?
不对。您可使用docker CLI
或远程docker API
。
它是在图像将要运行的机器?
是的,图像由码头工人守护程序运行,因此这将是主机。
如果是这样,如果我在多台机器上运行的图像会发生什么,它会创建两个独立的卷?
这取决于。在不同的机器上运行的图像可以以不同的方式来实现,与像kubernetes
或docker swarm
协调器盯着,并与独立的码头工人守护进程手动启动结束。与协调器就可以有相同的体积,不同主机之间共享,但在这种情况下,你不能使用bind mounts
,您使用volumes
。
当我有研发和生产安装,码头工人如何管理两个独立的卷为每个环境?
码头工人没有它是你谁管理。
除了它似乎相当容易失去做搬运工,谱写下来,当我使用的数据量,这使我毫不犹豫地使用数据卷的第一个障碍,就是有一个明显的解决方案以缓解该问题的数据?
卷可以很容易地docker-compose
会话之间保持。以实现最明确的方法是声明卷事先与
docker volume create foo
然后在您撰写的文件使用它:
version: '3'
services:
abc:
volumes:
foo:/foo
volumes:
foo:
external: true