Amazon Linux 1 AMI から起動される Amazon ECS インスタンスの Docker コンテナのストレージボリューム制限を引き上げるにはどうすればよいですか ?

最終更新日: 2019 年 8 月 23 日

Amazon Linux 1 Amazon Machine Image (AMI) から起動される Amazon Elastic Container Service (Amazon ECS) インスタンスの Docker コンテナスのトレージボリューム制限を引き上げる方法を教えてください。

簡単な説明

Docker はデフォルトで、Amazon ECS コンテナインスタンスに作成したボリュームに対し、10 ギビバイト (GiB) のストレージを割り当てています。10 GiB の制限に達したボリュームにさらにデータを書き込むと、そのコンテナインスタンスはクラッシュします。

重要: この記事は、Amazon Linux 1 AMI を使用して ECS クラスターでコンテナインスタンスを起動する場合に適用されます。Amazon Linux 2 AMI では、ディスク領域の残量におけるベースストレージサイズを提供する、 Docker のストレージドライバー overlay2 を使用します。

解決方法

注: 次の手順は、 devicemapper ストレージドライバーを使用するインスタンスに適用されます。

1.    Amazon ECS コンソールを開きます。

2.    ナビゲーションペインで、[Clusters] をクリックします。

3.    ストレージボリューム制限を引き上げるコンテナインスタンスがあるクラスターを選択します。

4.    [ECS Instances] ビューを選択します。

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 (10 GiB と同等) のコンテナボリュームサイズが表示されます。

7.    Docker ボリュームでデフォルトのストレージ割り当てを増やすには、コンテナインスタンスの Docker デーモン設定ファイル /etc/sysconfig/docker にある dm.basesize ストレージオプションを、10 GiB より大きい値に設定します。

重要: dm.basesize 値を設定した後は、Docker によってプルされる新しいイメージでは、設定した新しいストレージサイズが使用されるようになります。この値を変更する以前に作成されたか実行中であったコンテナは、変更前のストレージサイズを使用します。Docker デーモンの設定方法については、 Docker デーモンをご参照ください。

すべてのコンテナに dm.basesize オプションを適用するには、Docker サービスの開始前に値を設定変更します。例えば、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのユーザーデータで次のスクリプトを実行すると、デフォルトのボリューム割り当てを 20 GiB に設定できます。

#cloud-boothook
#!/bin/bash

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

8.    次のコマンドを実行し、新しい Docker コンテナボリュームがデフォルト制限の 10 GiB より大きく変更されたことを確認します。

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

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合