我使用docker-for-aws和cloudstor遇到了一个奇怪的问题。 所以我使用像这样的cloudstor手动创建2个卷
docker volume create \
-d "cloudstor:aws" \
--opt ebstype=gp2 \
--opt size=15 \
--opt iops=180 \
--opt backing=relocatable \
ci_ping3-1-vol
docker volume create \
-d "cloudstor:aws" \
--opt ebstype=gp2 \
--opt size=15 \
--opt iops=180 \
--opt backing=relocatable \
ci_ping3-2-vol
我使用一个名为ci的堆栈来测试它
version: "3.3"
services:
ping3:
image: alpine
command: ping docker.com
volumes:
- ping_vol:/mydata
deploy:
replicas: 2
volumes:
ping_vol:
external:
name: "{{.Service.Name}}-{{.Task.Slot}}-vol"
我的swarm由1名经理和1名工人组成(仅供测试)。然后,我在每个副本中执行bash并修改/mydata
文件夹中的文件。我去了aws控制台并杀死了工作实例,迫使服务重新定位。当我查看我的EBS控制台时,我可以看到当卷需要从AZ移动时如何创建第二个驱动器,但是一旦服务再次运行,/mydata
内的数据就不是我所期望的。
我在终止机器之前手动调用sync
,我试图缩小以强制更优雅的服务终止,但/mydata
上的结果绝不是我所期望的。奇怪的是,似乎有时候数据充满了旧测试的内容...所以我甚至不知道如何调试这个:(