如何增加从 Amazon Linux 1 AMI 启动的 Amazon ECS 实例的 Docker 容器存储卷限制?

上次更新时间:2020 年 10 月 15 日

我想增加从 Amazon Linux 1 Amazon 系统映像 (AMI) 启动的 Amazon Elastic Container Service (Amazon ECS) 实例的 Docker 容器存储卷限制。

简短描述

默认情况下,对于在 Amazon ECS 容器实例上创建的每个卷,Docker 将分配 10 吉比字节 (GiB) 的存储。当某个卷达到 10GiB 的上限时,您将无法继续向该卷写入任何数据,否则会导致容器实例崩溃。

重要提示:如果您使用 Amazon Linux 1 AMI 启动 ECS 集群中的容器实例,本文描述的内容将会适用。Amazon Linux 2 AMI 使用 Docker overlay2 存储驱动程序,它会让您的磁盘保留一个基本存储大小的空间。2020 年 12 月 31 日之后,将不再支持 Amazon Linux 1。

解决方法

注意:以下说明适用于使用 devicemapper 存储驱动程序的实例。

1.    打开 Amazon ECS 控制台

2.    在导航窗格中,选择集群

3.    选择包含您要增加存储容量限制的容器实例的集群。

4.    选择 ECS 实例视图。

5.    使用 SSH 连接到您的容器实例

6.    要查看卷的存储大小,请运行以下命令:

sudo lsblk

您应会收到与以下类似的输出:

NAME                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1                                                            259:1    0    8G  0 disk 
├─nvme0n1p1                                                        259:2    0    8G  0 part /
└─nvme0n1p128                                                      259:3    0    1M  0 part 
nvme1n1                                                            259:0    0   22G  0 disk 
└─nvme1n1p1                                                        259:4    0   22G  0 part 
  ├─docker-docker--pool_tdata                                      253:1    0 21.7G  0 lvm  
  │ └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
  │   └─docker-259:2-394380-e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
                                                                   253:3    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
  └─docker-docker--pool_tmeta                                      253:0    0   24M  0 lvm  
    └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
      └─docker-259:2-394380-e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624
                                                                   253:3    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/e76dfeb812faffb7a1b5b9553c76c44b70de4e1da69fadd3b89875fee8a6c624

注意:控制台将显示该容器卷的大小为 10G(相当于 10GiB)。

7.    为了增加 Docker 卷的默认存储分配,将 dm.basesize 存储选项设置为高于 10 GiB 的值。您可以在容器实例上的 Docker 守护进程配置文件 /etc/sysconfig/docker 中设置此值。

重要提示:在设置 dm.basesize 值后,从 Docker 提取的任何新镜像都将使用您设置的新存储值。在更改该值以前创建或运行的任何容器仍将使用旧存储值。有关如何指定 Docker 守护程序配置的信息,请参阅 Docker 守护程序

要将 dm.basesize 选项应用到您所有的容器,请在 Docker 服务启动之前设置该选项的值。例如,您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 实例的用户数据中使用以下脚本,将默认卷分配设置为 20GiB:

#cloud-boothook
#!/bin/bash

cloud-init-per once docker_options echo 'OPTIONS="${OPTIONS} --storage-opt dm.basesize=20G"' >> /etc/sysconfig/docker

8.    要验证您的新 Docker 容器卷大于默认的 10GiB 限制,请运行以下命令:

sudo lsblk

您应会收到与以下类似的输出:

NAME                                                               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1                                                            259:1    0    8G  0 disk 
├─nvme0n1p1                                                        259:2    0    8G  0 part /
└─nvme0n1p128                                                      259:3    0    1M  0 part 
nvme1n1                                                            259:0    0   22G  0 disk 
└─nvme1n1p1                                                        259:4    0   22G  0 part 
  ├─docker-docker--pool_tdata                                      253:1    0 21.7G  0 lvm  
  │ └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
  │   └─docker-259:2-394381-13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
                                                                   253:3    0   20G  0 dm   /var/lib/docker/devicemapper/mnt/13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
  └─docker-docker--pool_tmeta                                      253:0    0   24M  0 lvm  
    └─docker-docker--pool                                          253:2    0 21.7G  0 lvm  
      └─docker-259:2-394381-13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842
                                                                   253:3    0   20G  0 dm   /var/lib/docker/devicemapper/mnt/13ae906f682ac57dcac9c247d0e1677f6da4f9dc35528b853a84f5dcbf570842

这篇文章对您有帮助吗?


您是否需要账单或技术支持?