EC2 (Amazon Linux 2) は簡単にDocker環境を構築できます。
AWS経験5年以上の僕が、その構築手順を詳しくご説明します。
本記事の内容
- EC2へのDockerインストール手順
- EC2へのDocker Composeインストール手順(システム上の全OSユーザー向け)
もくじ
構成イメージ:はじめに
今回、EC2 (Amazon Linux 2) にDockerとDocker Composeをインストールします。
AWSマネジメントコンソールとSSHクライアントを使用します。
EC2にDockerとDocker Composeをインストールする前の準備
事前準備として、EC2とセキュリティグループを作成し、EC2にSSH接続します。
EC2作成
EC2はAmazon Linux 2をt2.microで作成、パブリックサブネットに配置しパブリックIPアドレスを付与します。
EC2作成方法については、こちらの記事をご覧ください。↓
-
【AWS】EC2でAmazon Linux 2を構築しSSH接続してみよう
続きを見る
セキュリティグループの設定
EC2のセキュリティグループで、インバウンドルールに以下が設定されていることを確認します。もし未設定の場合は設定しておきましょう。
- タイプ:SSH
- ソース:マイIP
EC2にSSHで接続する
SSHクライアントを使用して、作成したEC2にec2-userでSSH接続します。
EC2にDockerをインストールする
最初に、EC2にDockerをインストールします。
EC2内のパッケージを最新にしておく
EC2内のパッケージが最新ではない場合はupdateしておきましょう。
$ sudo yum update -y
updateしたパッケージによっては、OSを再起動したほうが良い場合もありますが、今回は再起動しません。
本記事ではDockerとDocker Composeのインストールを行いますが、それらはOSを再起動せずにインストールを進められるからです。
なお、yum update
後のOS再起動の要否はneeds-restarting -r
コマンドで確認できますが、本記事では詳細はふれません。
Docker Engineパッケージのインストール
amazon-linux-extras
で最新のDockerパッケージをインストールします。
$ sudo amazon-linux-extras install -y docker
amazon-linux-extrasとは
- Amazon Linux 2で使用できる専用のリポジトリを操作するコマンド
- Amazonが公式サポートしたパッケージをインストールできる
- PHP、Pythonなど特定のパッケージは、ディストリビューションの標準パッケージより新しいバージョンで使用可能
【公式】Extras library (Amazon Linux 2)
sudo yum install -y docker
を実行した場合も、amazon-linux-extrasのDockerパッケージがインストールされるようになっています。
インストール後の確認。[20 docker=latest enabled \]
と表示されていればインストール完了です。
$ amazon-linux-extras | grep docker
20 docker=latest enabled \
Dockerサービスの起動
次はDockerサービスを起動します。起動成功時のレスポンスは何もありません。
$ sudo systemctl start docker
Dockerサービスが起動していることを確認。[active (running)]
と表示されていれば正常に起動しています。
$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2022-06-11 23:45:40 UTC; 5s ago
略
Dockerサービスの自動起動を有効化
続いてDockerサービスの自動起動を有効にします。
これにより、EC2再起動後もDockerサービスが自動起動するようになります。
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Dockerサービスの自動起動が有効であることを確認。[enabled]
と表示されていればOK。
$ systemctl is-enabled docker
enabled
ec2-userにdockerグループを追加
Dockerをインストールすると、OSにdockerグループが自動作成されます。
以下コマンドで確認可能です。
$ grep docker /etc/group
docker:x:992:
そのdockerグループにec2-userを追加しましょう。(コマンド成功時のレスポンスはなし)
これでec2-userはsudo
なしでdocker
コマンドを実行できるようになります。
$ sudo usermod -a -G docker ec2-user
いったんEC2からログアウトし、再度EC2にec2-userでSSH接続しましょう。
それ以降の接続では、ec2-userにdockerグループのアクセス権限が付与された状態になります。
$ exit
ec2-userでdoker info
がsudo
なしで実行できることを確認します。
$ docker info
Client:
Context: default
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
略
docker info
実行結果の末尾に、以下が表示された場合は無視してOKです。本記事を進める手順には関係ありません。
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
EC2にDocker Compose(docker-compose)をインストールする
EC2にDockerをインストールしたあとに、Docker Composeをインストールします。
Docker Composeのインストール
今回はDocker Composeのバージョン 2.4.1 をインストールします。
最新のバージョンはdocker docsの公式サイトから確認できます。
上記ドキュメント内で、[最新安定版] の文字で検索してみてください。
Docker Composeは、OSのユーザー単位で(ユーザーのhomeディレクトリ配下へ)インストールする方法もあります。
今回はシステム自体(サーバーの/usr/
配下)にインストールします。
はじめに/usr/local/lib/
配下にディレクトリ/usr/local/lib/docker/cli-plugins/
を作成。
このあとの手順でDocker Composeのバイナリファイルを格納します。
$ sudo mkdir -p /usr/local/lib/docker/cli-plugins
変数VER
にDocker Composeのバージョンを代入します。バージョンの数字は適宜変えてください。
$ VER=2.4.1
GitHubにあるDocker Composeのバイナリファイルを、上記で作成した/usr/local/lib/docker/cli-plugins/
にダウンロードします。
以下3行をまとめてコピペしてください。
$ sudo curl \
-L https://github.com/docker/compose/releases/download/v${VER}/docker-compose-$(uname -s)-$(uname -m) \
-o /usr/local/lib/docker/cli-plugins/docker-compose
ダウンロードしたdocker-compose
(バイナリファイル)に実行権限を付与します。
$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
/usr/bin/
に/usr/local/lib/docker/cli-plugins/docker-compose
へのシンボリックリンクを設定します。
(コマンド成功時のレスポンスはなし)
$ sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose
docker-compose
コマンドが使用できることを確認。以下が表示されていればDocker Composeインストールは成功です。
$ docker-compose --version
Docker Compose version v2.4.1
Docker ComposeはOSコマンドと同じような扱いのため、サービス自動起動の設定は不要です。
Dockerを勉強するための教材
Dockerを勉強したい人は、以下の『仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん』がおすすめです。
イラストが多く説明も分かりやすいので、初学者にぴったりの入門書。
ハンズオンを通して、コンテナの仕組みやDockerコマンドを学ぶことができます。
Docker ComposeとKubernetesの解説もあり、それらも実際に手を動かしながら基礎を学習できます。
Docker環境をEC2で構築:まとめ
AWSのVPC環境さえ整っていれば、10分くらいでEC2にDockerとDocker Composeをインストールできるのは素晴らしいですよね。
以下の記事では、DockerとDocker ComposeでJenkinsを導入する手順を解説しています。
Docker学習の次のステップとして、ぜひ実施してみてください。
-
【AWS】EC2のDockerでJenkins(Master+Slave)導入
続きを見る