Help us understand the problem. What is going on with this article?

Amazon Linux 2 でdockerを使ってみる (Apache2.4)

概要

EC2インスタンスを起動して、dockerを使えるようにする。

インスタンス起動

EC2 -> インスタンス -> インスタンスの作成
※ Amazon Linux 2 AMIを選択
※ セキュリティグループは、80ポートと22ポートを解放する。
(22ポートは不要だが学習用なので簡略化のため設定)

サーバへ接続する

ターミナルを使って起動したEC2インスタンスに接続する。
※ IAMユーザーにてssh接続。
※ アカウントは、多要素認証 (MFA) を設定し、利用しない。

ターミナル
$ ssh aws

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
Run "sudo yum update" to apply all updates.

とりあえず、yumを更新しておく。

ターミナル
$ sudo yum update -y

Dockerインストール

Amazon Linux Extras リポジトリを使ってインストールします。
下記コマンドにてインストールできる内容を確認する。

ターミナル
$ amazon-linux-extras list
 ...
 20  docker                   available    \
        [ =17.12.1  =18.03.1  =18.06.1 ]
 ...

インストールされる内容を確認してみる。

ターミナル
$ amazon-linux-extras info docker
docker recommends docker          # yum install docker

dockerをインストールする。

ターミナル
# インストール (最新版を指定してみる)
$ sudo amazon-linux-extras install -y docker=18.06.1

# 起動
$ sudo service docker start
$ sudo systemctl enable docker.service
$ sudo service docker status

# バージョン確認
$ docker -v
Docker version 18.06.1-ce, build ...

# dockerグループに参加する
$ sudo usermod -a -G docker ec2-user
$ cat /etc/group | grep docker
docker:x:993:ec2-user

# 設定を反映するため、sshを再接続する
$ exit
$ ssh aws

Docker-Compose インストール

docker-composeもインストールしておきます。

ターミナル
# 一時的にrootユーザーになって作業する
$ sudo -i
$ curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ exit

# 通常ユーザーに戻ってバージョン確認してみる
$ docker-compose --version
docker-compose version 1.11.2, build dfed245

コンテナ起動

コンテナを起動して動作確認してみる。

ターミナル
# Hello Worldを実行してみる
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

# ubuntuを起動してみる
$ docker run --rm -it ubuntu bash
root@***********:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
...
root@***********:/# exit

# イメージ確認
$ docker images
REPOSITORY        TAG               IMAGE ID        CREATED           SIZE
ubuntu            latest            93fd78260bd1    3 weeks ago       86.2MB
hello-world       latest            4ab4c602aa5e    3 months ago      1.84kB

# コンテナ確認
$ docker ps -a
CONTAINER ID      IMAGE             COMMAND         CREATED           STATUS                   PORTS           NAMES
26b515135561      hello-world       "/hello"        4 minutes ago     Exited (0) 3 minutes ago                 amazing_davinci
a89895358ad3      hello-world       "/hello"        5 minutes ago     Exited (0) 5 minutes ago                 kind_zhukovsky
d055b97abbfa      hello-world       "/hello"        5 minutes ag      Exited (0) 5 minutes ago                 sleepy_northcutt

# 不要なコンテナ一括削除
$ docker rm `docker ps -f "status=exited" -q`
26b515135561
a89895358ad3
d055b97abbfa

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Apache2.4

webサーバを起動し、80ポートでアクセスできるようにしてみる。

ターミナル
$ docker run -d --name httpd -p 80:80 httpd:2.4

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS               NAMES
************        httpd:2.4           "httpd-foreground"   3 seconds ago       Up 2 seconds        80/tcp              httpd

ブラウザでアクセスしてみる。
起動したインスタンスの「パブリック DNS (IPv4)」に記載されているIPアドレスにアクセス。
※ 今回のIPアドレス: IPv4 パブリック IP 13.113.85.220
test.png
後片付け(コンテナ破棄)

ターミナル
$ docker rm -f httpd
httpd

以上

まとめ

docker-composeなどで構成管理して、コマンド一発で起動したり、Amazon Elastic Container Registry (ECR)などにアプリコードも含めたDockerfileで構築したdockerイメージを登録して、そこから起動できるようにしたらもっと実践的になりそうですが、ここで書くと読み難くなるので別途記事化したいと思います。

参考サイト

reflet
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした