メモ > サーバ > 各論: Docker > EC2でDockerを使用する
EC2でDockerを使用する
通常の手順でEC2を作成し、SSHでアクセスできることを確認しておく
ここではAmazonLinux2を使うものとする
通常の手順で言語・タイムゾーン・アップデート・開発ツールインストール・メール送信など最低限のものを設定しておく
※EC2のIPアドレスは「203.0.113.1」であるとする
※AmazonLinux2の場合、DockerはExtrasリポジトリからインストールすることができる
※ECSなどAWSのマネージドサービスについては「AWS.txt」を参照
■Dockerをインストール
EC2(Amazon Linux 2)にDocker CEをインストールしてみる - Qiita
https://qiita.com/simis/items/902e18c82f602917ccf2
※もとは「yum install -y docker」としてインストールすれば良かったようだが、
今は「yum install -y docker-ce」としてCE版をインストールする方が良さそう
ただしAmazonLinux2ならExtrasリポジトリにdockerがあるので、AmazonLinux2の場合は原則これをインストールすると良さそう
# amazon-linux-extras install docker -y … dockerをインストール
# systemctl start docker … dockerを起動
# systemctl enable docker … dockerの自動起動を設定
# docker info … dockerの起動を確認
# docker container run hello-world … hello-worldの起動を確認
# docker image ls
■一般ユーザでDockerを実行できるようにする
一般ユーザでDockerを実行すると、「Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock」のようなエラーになる
これはグループを調整することで対処できる
# groupadd docker … dockerグループを作成(環境によっては作成済みみたい)
# usermod -a -G docker ec2-user … ec2-userをdockerグループに入れる。これでec2-userがdockerコマンドを実行できる
# systemctl restart docker … dockerを再起動(必須)
# exit
$ docker info … 上記変更は、再接続後に反映されるので注意
■Apache+PHPの動作確認
$ docker container run --name php -p 80:80 -d php:8.1-apache … 「php」という名前を付けてApacheの起動を確認
$ docker image ls
$ docker container ls
$ docker container exec -it php bash … phpコンテナのターミナルに接続
# echo '<?php phpinfo();' > index.php … index.php を作成(初期状態ではviはインストールされていない)
# exit
ブラウザで以下にアクセスし、phpinfoの内容が表示されれば成功
(コンテンツを何も作成していない場合、「403 Forbidden」が表示される)
http://203.0.113.1/
$ docker container rm -f $(docker container ls -a -q) … いったんすべてのプロセスを終了
$ docker container ls
■Docker Composeをインストール
【AWS】EC2にDockerとDocker Composeをインストール - ふにノート
https://kacfg.com/aws-ec2-docker/
最新のバージョンは https://github.com/docker/compose/releases/ で確認できる
今回は検証時最新版の 2.14.2 を使用する
$ sudo su -
# curl -L https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
# exit
$ docker-compose --version … ec2-userでも実行できることを確認
■Docker Composeの動作確認
/home/ec2-user/docker/test にPHP環境構築用の Docker Compose を配置するものとする
起動中のコンテナがあれば、終了させておく
$ cd /home/ec2-user/docker/test
$ docker-compose build
$ docker-compose up -d
$ docker-compose down
$ docker container exec -it php bash
# ls -l /var/www/public
# exit
$ docker container exec -it mysql bash
# mysql -u user -p
> exit
# exit
http://203.0.113.1/
■参考
AWS EC2インスタンスにdockerとdocker-composeをインストールして簡単なWEBサービスを立ち上げる方法 - Qiita
https://qiita.com/y-do/items/e127211b32296d65803a
EC2上でDockerのnginxコンテナを動かしてアクセスを確認した - やる気がストロングZERO
https://yaruki-strong-zero.hatenablog.jp/entry/ec2_docker_nginx
AWS EC2 Amazon LinuxでDocker, Docker Composeをインストールする - Qiita
https://qiita.com/shinespark/items/a8019b7ca99e4a30d286
ECSを試す際は以下も参考になるかも
知識0から Docker 環境を AWS の ECS でデプロイするまで - istyle Tech Blog
https://techblog.istyle.co.jp/archives/1652