首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dockerrun.aws.json中设置卷大小

在Dockerrun.aws.json中设置卷大小
EN

Stack Overflow用户
提问于 2019-11-18 15:16:28
回答 1查看 273关注 0票数 0

嘿,我正在通过弹性beanstalk部署我的多容器码头环境。

我的docker-compose.yml有一个条目,比如

代码语言:javascript
复制
service:
    image: redis
    volumes:
        - redisdata:/data
volumes:
    redisdata:

这样,redisdata的内容就会散布到磁盘上,并进行“幸存”部署。

在dockerrun.aws.json方面,这将导致

代码语言:javascript
复制
{
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        {
            "essential": true,
            "image": "redis",
            "mountPoints": [
                {
                    "containerPath": "/data",
                    "sourceVolume": "Redisdata"
                }
            ],
            "name": "redis"
        }
    ],
    "family": "",
    "volumes": [
        {
            "host": {
                "sourcePath": "redisdata"
            },
            "name": "Redisdata"
        }
    ]
}

现在我的问题是:

代码语言:javascript
复制
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中看到了指定“标准”挂载点的选项,但是如何确保创建了源目录,并且它有足够的空间?

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 19:40:10

到目前为止,我找到的唯一解决方案是修改ebextension配置文件。

我创建了一个包含以下内容的文件.ebextensions/bla.config

代码语言:javascript
复制
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: RootVolumeSize
    value: "100"

这样,docker容器的根卷将具有100 GB。

警告:部署此附加文件将擦除您的ec2实例,ec2实例上的所有数据(包括docker卷)都将丢失!

EBS编辑:添加外部设备的附加解决方案这是我从亚马逊支持部门获得的信息:

通过以上步骤,可以成功添加外部

设备,将其挂载到docker容器上。另外,我建议您考虑使用Elastic File System (EFS)进行持久存储。EFS的优势在于它的存储容量是弹性的,即使环境EC2实例意外终止,数据也是持久的。这里是博客6,其中提供了将EFS卷挂载到Elastic Beanstalk环境实例的步骤。

下面是将外部EBS设备(大小为30 EBS)添加到beanstalk环境实例的.ebextensions配置文件。您还可以将EBS卷与快照一起添加。

代码语言:javascript
复制
[root@ip-172-31-21-181 multi-dockerapp]# cat .ebextensions/ebs.config commands:   
01mkfs:
    command: "mkfs -t ext3 /dev/sdh"   02mkdir:
    command: "mkdir /media/volume1"   03mount:
    command: "mount /dev/sdh /media/volume1"
option_settings:   
    aws:autoscaling:launchconfiguration:
        InstanceType: t2.large
        EC2KeyName: eks
        MonitoringInterval: "1 minute"
        IamInstanceProfile: "aws-elasticbeanstalk-ec2-role"
        BlockDeviceMappings: "/dev/sdh=:30,/dev/sdj=snap-51eef269"

下面的媒体是'Dockerrun.aws.json‘文件的片段,该文件创建卷的sourcePath为’/

/volume1‘

代码语言:javascript
复制
[root@ip-172-31-21-181 multi-dockerapp]# cat Dockerrun.aws.json 
{   "AWSEBDockerrunVersion":

2,   "volumes": [
    {
      "name": "php-app",
      "host": {
        "sourcePath": "/media/volume1"
      }
    },
    ....
    "containerDefinitions": [
      {
        .....
      "mountPoints": [
        {
          "sourceVolume": "php-app",
          "containerPath": "/var/www/html"
        }
      ]
    } }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58909600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档