0
0

AWS Cloud9でのDocker Composeのセットアップ、およびEBSボリュームを拡張してみた

Posted at

背景

Dockerでの環境構築を勉強している時に、Pytorchなどサイズの大きいライブラリーを組み込むと、docker buildでローカルのインターネット回線の速度の遅さが露呈してしまい、3時間もかかってしまった事から、「AWSのcloud9でDockerの勉強をしよう」と思いましたが、

  • AWS cloud9にはDockerは標準で入っているけれど、Docker Composeは標準で入っていない
  • AWS cloud9のEBSボリュームが10GBの場合、Pytorchなどサイズの大きいライブラリーを組み込む際、ボリューム不足でdocker buildが止まってしまう

ので、それらの対応方法を書いてみました。

試した事

Docker Composeのセットアップ

curlコマンドでDocker Composeを取得します。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 25.2M  100 25.2M    0     0  22.9M      0  0:00:01  0:00:01 --:--:-- 62.9M

取得先のURLは、

のこちらのものを使いました。

スクショ.png


続いて、権限を変更すると、

sudo chmod +x /usr/local/bin/docker-compose

Docker Composeを利用出来るようになりました。

docker-compose -v
Docker Compose version v2.4.1

EBSボリュームの拡張方法

まずは、EBSボリュームのサイズを変更します。
マネジメントコンソールで対象のcloud9の「EC2インスタンスの管理」をクリックします。

スクショ1.png

表示されたインスタンスIDをクリックします。

スクショ2.png

画面真ん中辺りの「ストレージ」タブをクリックします。

スクショ3.png

対象のボリュームIDをクリックします。

スクショ4.png

チェックボックスにチェックを入れた後、画面右上のアクションの三角ボタンをクリックして、「ボリュームの変更」をクリックします。

スクショ5.png

サイズが10GBなので、

スクショ6.png

30GBに変えて、変更をクリックします。

スクショ7.png

もう一回、変更をクリックします。

スクショ8.png

対象のEBSボリュームのサイズ変更が行われます。

スクショ9.png

少し待った後に、画面を更新すると、30GBに変更されました。

スクショ10.png

EBSボリュームのサイズは変更されたので、その変更をcloud9のインスタンス側に適用します。
対象のcloud9のCLI画面で、まずは適用前の状態を確認します。

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs          tmpfs     475M     0  475M   0% /dev/shm
tmpfs          tmpfs     190M  2.9M  188M   2% /run
/dev/xvda1     xfs        10G  7.1G  2.9G  72% /
tmpfs          tmpfs     475M     0  475M   0% /tmp
/dev/xvda128   vfat       10M  1.3M  8.7M  13% /boot/efi
tmpfs          tmpfs      95M     0   95M   0% /run/user/1000

「/dev/xvda1」のUsedが7.1GB、Availが2.9GBなので、ここにEBSボリュームがマウントされているようです。
また、lsblkコマンドでも確認出来ます。

lsblk
NAME      MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
xvda      202:0    0  30G  0 disk 
├─xvda1   202:1    0  10G  0 part /
├─xvda127 259:0    0   1M  0 part 
└─xvda128 259:1    0  10M  0 part /boot/efi

では、EBSボリュームのサイズ変更を適用します。

sudo growpart /dev/xvda 1
CHANGED: partition=1 start=24576 old: size=20946911 end=20971487 new: size=62889951 end=62914527
sudo xfs_growfs -d /
meta-data=/dev/xvda1             isize=512    agcount=3, agsize=1047040 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=2618363, imaxpct=25
         =                       sunit=128    swidth=128 blks
naming   =version 2              bsize=16384  ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=4096  sunit=4 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2618363 to 7861243

EBSボリュームのサイズ変更の適用を確認してみます。

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs          tmpfs     475M     0  475M   0% /dev/shm
tmpfs          tmpfs     190M  2.9M  188M   2% /run
/dev/xvda1     xfs        30G  7.3G   23G  25% /
tmpfs          tmpfs     475M     0  475M   0% /tmp
/dev/xvda128   vfat       10M  1.3M  8.7M  13% /boot/efi
tmpfs          tmpfs      95M     0   95M   0% /run/user/1000

キチンと「/dev/xvda1」は30GBになりました。

Appendix

試しに、Pytorch等のライブラリーを組み込んだDockerイメージをbuildしてみます。
まずは、Dockerfileを含んでいるフォルダを、対象のcloud9にアップロードします。

スクショ11.png

スクショ12.png

CLI画面でもアップロードされた事を確認してみます。

ls -l
total 4
-rw-r--r--. 1 ec2-user ec2-user 569 Aug  6 01:54 README.md
drwxr-xr-x. 2 ec2-user ec2-user  24 Aug 17 07:41 pytorch2-3-1_cuda12-1-1

カレントディレクトリを、先程アップロードしたフォルダに変更して、docker buildを行います。
(Docker Composeをセットアップしたにも関わらず、docker-compose buildでなくゴメンなさい。まだ、docker-compose.ymlを作っていませんでした。)

cd ./pytorch2-3-1_cuda12-1-1
docker build -t ubuntu22.04_pytorch2.3.1_cuda12.1.1 -f Dockerfile .
[+] Building 721.6s (25/25) FINISHED                                                                                                              docker:default
 => [internal] load build definition from Dockerfile                                                                                                        0.1s
 => => transferring dockerfile: 1.08kB                                                                                                                      0.0s
 => [internal] load metadata for docker.io/nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04                                                                      1.8s
 => [internal] load .dockerignore                                                                                                                           0.0s
 => => transferring context: 2B                                                                                                                             0.0s
 => [ 1/21] FROM docker.io/nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04@sha256:21196d81f56b48dbee70494d5f10322e1a77cc47ffe202a3bf68eab81533c20f            240.5s

Dockerイメージを確認してみます。

docker images
REPOSITORY                            TAG       IMAGE ID       CREATED         SIZE
ubuntu22.04_pytorch2.3.1_cuda12.1.1   latest    37434c9fb97c   2 minutes ago   17GB

キチンとDockerイメージが作成されました。
(AWS cloud9ではdocker buildは10分程度で完了しました(笑))

所感

ローカルのインターネット回線の遅さが露呈されたので、今度からはAWS cloud9をちょこちょこ利用してみようと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0