【EC2】Amazon Linux 2 (aarch64)にDocker EngineとDocker Composeをインストール
Contents
はじめに
ARMアーキテクチャベースのAWS Graviton2プロセッサを搭載したEC2インスタンスは、従来のインスタンスタイプよりも料金が割安です。
参考: AWS Graviton
現在個人環境で使用しているEC2インスタンスのリプレースとコンテナ化を検討しており、上記インスタンス上で動作するAmazon Linux 2 (aarch64)でDocker EngineおよびDocker Composeのインストールを試してみました。
前提条件
以下条件のEC2インスタンスで検証しています。
- インスタンスタイプ: t4g.micro
- AMI: amzn2-ami-kernel-5.10-hvm-2.0.20230307.0-arm64-gp2
- ネットワーク: インターネットに接続可能なパブリックサブネット
- ソフトウェアバージョン
- Docker Engine 20.10.17
- Docker Compose 2.16.0
OSとカーネルのバージョンは以下の通りです。
$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ uname -r
5.10.167-147.601.amzn2.aarch64
Docker Engine
パッケージインストール
Amazon Linux 2のExtras Libraryでインストール可能なDocker Engineのバージョンを確認します。
$ sudo amazon-linux-extras list
0 ansible2 available [ =2.4.6 =2.8 =stable ]
1 httpd_modules available [ =1.0 =stable ]
2 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
5 postgresql10 available [ =10 =stable ]
7 R3.4 available [ =3.4.3 =stable ]
8 rust1 available [ =stable ]
14 libreoffice available [ =5.3.6.1 =stable ]
16 docker=latest enabled \
[ =18.06.1 =18.09.9 =stable ]
17 mate-desktop1.x available [ =stable ]
18 GraphicsMagick1.3 available \
[ =1.3.29 =1.3.32 =1.3.34 =stable ]
19 tomcat8.5 available \
[ =8.5.32 =8.5.38 =8.5.40 =8.5.42 =8.5.50 =stable ]
20 epel available [ =7.11 =stable ]
21 testing available [ =1.0 =stable ]
22 ecs available [ =stable ]
23 corretto8 available \
[ =1.8.0_202 =1.8.0_212 =1.8.0_222 =1.8.0_232 =1.8.0_242
=stable ]
24 golang1.11 available \
[ =1.11.3 =1.11.11 =1.11.13 =stable ]
25 squid4 available [ =4 =stable ]
27 java-openjdk11 available [ =11 =stable ]
28 lynis available [ =stable ]
30 BCC available [ =0.x =stable ]
31 nginx1 available [ =stable ]
32 ruby2.6 available [ =2.6 =stable ]
33 mock available [ =stable ]
34 postgresql11 available [ =11 =stable ]
36 python3.8 available [ =stable ]
37 lustre2.10 available [ =stable ]
38 haproxy2 available [ =stable ]
39 collectd available [ =stable ]
40 R4 available [ =stable ]
_ kernel-5.4 available [ =stable ]
42 selinux-ng available [ =stable ]
43 php8.0 available [ =stable ]
44 tomcat9 available [ =stable ]
45 unbound1.13 available [ =stable ]
46 mariadb10.5 available [ =stable ]
47 kernel-5.10=latest enabled [ =stable ]
48 redis6 available [ =stable ]
49 ruby3.0 available [ =stable ]
50 postgresql12 available [ =stable ]
51 postgresql13 available [ =stable ]
52 mock2 available [ =stable ]
53 dnsmasq2.85 available [ =stable ]
54 aws-nitro-enclaves-cli available [ =stable ]
55 livepatch available [ =stable ]
56 kernel-5.15 available [ =stable ]
57 postgresql14 available [ =stable ]
58 firefox available [ =stable ]
59 lustre available [ =stable ]
60 php8.1 available [ =stable ]
61 awscli1 available [ =stable ]
docker
がデフォルトでenabled
状態なので、最新バージョンをインストールします。
$ sudo amazon-linux-extras install -y docker
サービス起動
Dockerサービスの自動起動有効化および起動を行います。
$ sudo systemctl enable --now docker
$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2023-03-12 02:09:26 UTC; 8s ago
Docs: https://docs.docker.com
Process: 1483 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
Process: 1481 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
Main PID: 1488 (dockerd)
Tasks: 8
Memory: 21.4M
CGroup: /system.slice/docker.service
└─1488 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont...
(略)
グループ設定
Amazon Linux 2のOSユーザとしてデフォルトで作成されるec2-user
を使用して、root権限無しでdocker
コマンドを操作できるようにします。
Docker Engineインストール時に自動的に作成されるdocker
グループにec2-user
を追加します。
$ sudo usermod -aG docker ec2-user
$ newgrp docker
動作確認
ec2-user
にログインしている状態で以下のコマンドが実行できればインストールは完了です。
$ docker info
Client:
Context: default
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.17
(略)
Docker Compose
実行ファイルの配置
Docker EngineのプラグインとしてDocker Composeの実行ファイルを配置します。
curl
を使用して実行ファイルをインストールする際は、アーキテクチャがaarch64
のファイルを指定するよう注意してください。
$ DOCKER_CONFIG=${DOCKER_CONFIG:-/usr/local/lib/docker}
$ sudo mkdir -p $DOCKER_CONFIG/cli-plugins
$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-aarch64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
動作確認
Docker Compose自体はサービスを持ちません。実行ファイルを配置した後はdocker
コマンドの引数としてそのまま使用可能です。
以下コマンドが実行できればインストールは完了です。
$ docker compose version
Docker Compose version v2.16.0
参考文献
Amazon Linux 2 を実行している EC2 インスタンスに Extras Library からソフトウェアパッケージをインストールする方法を教えてください。
Docker Docs