在码头群中使用flock是否安全/可行?
我正在寻找一种安全的方法,让多个容器写入相同的文件(在相同的卷上)。我知道在一台主机上的docker将会bind mount。我不确定的是,当通过集群上的docker-compose旋转容器时,它是如何工作的。
如果我在一个服务中有多个相同镜像的实例,并且这些实例都共享一个卷,那么当我在一个群上启动时,容器是否会在不同的主机上启动?如果是,该卷将如何在操作系统级别共享?我有哪些用于控制并发写入的同步选项?
发布于 2020-10-07 20:34:43
创建NFS卷
示例:
# create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=nfsvers=4,addr=192.168.1.1,rw \
--opt device=:/path/to/dir \
foo
# inside a docker-compose file
...
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=192.168.1.1,rw
device: ":/path/to/dir"
发布于 2020-10-07 23:03:09
docker volumes
对于在其上创建它们的节点是本地的,它们不在docker swarm
节点之间共享。
在多节点swarm
集群中(或在Kubernetes中)运行时,容器可以在集群内的任何节点上结束。对于共享访问docker volume
(或者Kubernetes中的PVC ),卷必须由可以从集群内的每个节点访问的网络文件系统之类的东西作为后备。
NFS第4版implements close-to-open consistency。有关NFS v4实现的全部细节,请参阅RFC 3530的"9.3.数据缓存“
共享保留和记录锁定是NFSversion4协议提供的功能,允许应用程序通过提供互斥功能来协调访问。
提示:命名的docker volumes
是bind-mounts,卷在(默认情况下) /var/lib/docker/volumes
中的磁盘上创建,并在docker run -v <named_docker_volume>:<container_mount_path> ...
期间绑定挂载。
https://stackoverflow.com/questions/64242389
复制相似问题