【Docker】EC2にDockerインストール~WEBページ表示迄
はじめに
AWS上のEC2(t2.micro)にDockerをインストールし、nginxコンテナを立てる。
WEBページが表示できるところまで実施。
Dockerとは??
- コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム
- Docker社が開発
構成図
EC2(ubuntu)のスペック
項目 | 設定 |
---|---|
VM名 | dockertest |
インスタンスタイプ | t2.micro |
OS | Ubuntu |
vCPU | 1 |
メモリ(GiB) | 1 |
ルートデバイス名 | /dev/sda1:8GB |
※必要最低限の構成になります。
前提
- AWS内のVPCやEC2等の環境は事前に構築済み
- EC2(ubuntu)は作成した直後の状態
- 以下のセキュリティグループを使用
※SSH(22ポート)と8080ポートを開放
構築手順
①Dockerインストール
②nginxイメージのダウンロード
③nginxコンテナの作成
④WEB画面表示確認
①Dockerインストール
UbuntuにDockerをインストールする。
Dockerのリポジトリ設定
1.aptパッケージを更新する。
sudo apt update
2.必要なパッケージをインストールする。
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
実行例)
ubuntu@ip-192-168-0-140:~$ sudo apt install \
> apt-transport-https \
> ca-certificates \
> curl \
> gnupg-agent \
> software-properties-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
ca-certificates is already the newest version (20210119~20.04.1).
ca-certificates set to manually installed.
curl is already the newest version (7.68.0-1ubuntu2.4).
curl set to manually installed.
software-properties-common is already the newest version (0.98.9.4).
software-properties-common set to manually installed.
The following NEW packages will be installed:
apt-transport-https gnupg-agent
0 upgraded, 2 newly installed, 0 to remove and 39 not upgraded.
Need to get 6936 B of archives.
After this operation, 207 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu focal-updates/universe amd64 apt-transport-https all 2.0.4 [1704 B]
Get:2 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu focal-updates/universe amd64 gnupg-agent all 2.2.19-3ubuntu2.1 [5232 B]
Fetched 6936 B in 0s (18.4 kB/s)
Selecting previously unselected package apt-transport-https.
(Reading database ... 60092 files and directories currently installed.)
Preparing to unpack .../apt-transport-https_2.0.4_all.deb ...
Unpacking apt-transport-https (2.0.4) ...
Selecting previously unselected package gnupg-agent.
Preparing to unpack .../gnupg-agent_2.2.19-3ubuntu2.1_all.deb ...
Unpacking gnupg-agent (2.2.19-3ubuntu2.1) ...
Setting up apt-transport-https (2.0.4) ...
Setting up gnupg-agent (2.2.19-3ubuntu2.1) ...
ubuntu@ip-192-168-0-140:~$
3.Docker公式のGPG公式鍵をインストールする。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
実行例)
ubuntu@ip-192-168-0-140:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
ubuntu@ip-192-168-0-140:~$
4.fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
であることを確認する。
sudo apt-key fingerprint 0EBFCD88
実行例)
ubuntu@ip-192-168-0-140:~$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
ubuntu@ip-192-168-0-140:~$
5.repository (stable) を追加する。
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
実行例)
ubuntu@ip-192-168-0-140:~$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"
Get:1 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:2 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:4 https://download.docker.com/linux/ubuntu focal InRelease [36.2 kB]
Get:5 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages [8458 B]
Hit:6 http://security.ubuntu.com/ubuntu focal-security InRelease
Fetched 524 kB in 1s (980 kB/s)
Reading package lists... Done
ubuntu@ip-192-168-0-140:~$
Dockerインストール
1.aptパッケージを更新する。
sudo apt update
2.最新版のDockerをインストール。
sudo apt-get install docker-ce docker-ce-cli containerd.io
3.Dockerを起動する。
sudo systemctl start docker
4.Dockerが起動していることを確認。
sudo systemctl status docker
→「active(running)」であればOK
実行例)
ubuntu@ip-192-168-0-140:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: active (running) since Thu 2021-03-25 10:37:24 UTC; 2min 6s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 3065 (dockerd)
Tasks: 8
Memory: 55.1M
CGroup: /system.slice/docker.service
mq3065 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/cont>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.24665>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.24682>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.24695>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.24730>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.40969>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.50076>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.59835>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.59868>
Mar 25 10:37:24 ip-192-168-0-140 systemd[1]: Started Docker Application Contain>
Mar 25 10:37:24 ip-192-168-0-140 dockerd[3065]: time="2021-03-25T10:37:24.64941>
5.Dockerの自動起動設定をする。
sudo systemctl enable docker
6.Dockerの自動起動設定確認をする。
sudo systemctl is-enabled docker
実行例)
ubuntu@ip-192-168-0-140:~$ sudo systemctl is-enabled docker
enabled
ubuntu@ip-192-168-0-140:~$
②nginxイメージのダウンロード
1.root権限にスイッチする。
sudo -i
※dockerを操作するためには、root権限へのスイッチが必要。
2.nginxイメージのダウンロードを実施する。
docker pull nginx
実行例)
root@ip-192-168-0-140:~# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
6f28985ad184: Pull complete
29f7ebf60efd: Pull complete
879a7c160ac6: Pull complete
de58cd48a671: Pull complete
be704f37b5f4: Pull complete
158aac73782c: Pull complete
Digest: sha256:d2925188effb4ddca9f14f162d6fba9b5fab232028aa07ae5c1dab764dca8f9f
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
root@ip-192-168-0-140:~#
3.nginxイメージが取得できていることを確認する。
docker images
実行例)
root@ip-192-168-0-140:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 6084105296a9 12 days ago 133MB
root@ip-192-168-0-140:~#
③nginxコンテナの作成
1.nginxコンテナの作成する。
docker run --name nginx01 -d -p 8080:80 nginx
【説明】
- 「nginx01」というコンテナを作成
- 外部ポート:8080、内部ポート:80
※8080ポートは、既にセキュリティグループにて開放済み。
実行例)
root@ip-192-168-0-140:~# docker run --name nginx01 -d -p 8080:80 nginx
73fa6c221e8094acf6f62d73c044e5265fb3d437981f595999ab34a6c6f95b93
root@ip-192-168-0-140:~#
2.nginxコンテナが作成できていることを確認する。
docker ps
→「nginx01」のコンテナが「Up」していれば問題なし。
実行例)
root@ip-192-168-0-140:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73fa6c221e80 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp nginx01
root@ip-192-168-0-140:~#
④WEB画面表示確認
ブラウザのURL欄に以下のように入力する。
パブリックIPアドレス:8080
nginxのWEB画面が表示されることを確認。
Discussion