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] ビューを選択します。
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