嘿,我正在通过弹性beantalk部署多容器docker env。
我的docker-compose.yml具有类似条目
service:
image: redis
volumes:
- redisdata:/data
volumes:
redisdata:
通过这种方式,redisdata的内容被固定在磁盘上,并且“生存”部署。
在dockerrun.aws.json端,这导致
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"essential": true,
"image": "redis",
"mountPoints": [
{
"containerPath": "/data",
"sourceVolume": "Redisdata"
}
],
"name": "redis"
}
],
"family": "",
"volumes": [
{
"host": {
"sourcePath": "redisdata"
},
"name": "Redisdata"
}
]
}
现在是我的问题:
ec2-instance $ df -h
/dev/xvda1 7,8G 7,7G 0 100% /
/dev/dm-3 99G 89M 94G 1% /var/lib/docker/devicemapper/mnt/2d33cb679881808fac34182bfbec8feb57bf5f65c81c51b52c3f6c9917541040
创建的卷redisdata
仅具有7.7 GB的大小,其中redis容器的主根文件系统获得了99 GB的空间。这是由于将这样的命名卷挂载到ec2实例上的/var/app/current/redisdata
上的结果,并且该文件夹只是8 GB根挂载的一部分。如何为Dockerrun.aws.json添加大小规格?
我已经看到了在Dockerrun.aws.json中指定“标准”安装点的选项,但是如何确定源目录已创建并且它具有足够的空间?
我到目前为止发现的唯一解决方案是通过更改ebextension配置文件。
我创建了带有内容的文件.ebextensions/bla.config
option_settings:
- namespace: aws:autoscaling:launchconfiguration
option_name: RootVolumeSize
value: "100"
这样,docker容器的根卷将具有100 GB。
注意:部署此附加文件将擦除您的ec2实例,ec2实例上的所有数据(包括docker卷)都将丢失!]