EC2(Amazon Linux 2)にdockerとdocker-composeをインストールしてみる

EC2にdockerとdocker-composeをインストールしてみる。

## EC2起動
パブリックサブネットで適当にインスタンス起動。
SSHログインができるようSGはインバウンドのSSHを空けておく。

## EC2ログイン
SSHクライアント(Teraterm等)でもInstant Conectでもやり方は何でもよいのでインスタンスにSSH接続する。ユーザーはec2-user。

## Dockerインストール
```sh
$ sudo yum -y install docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                     | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be installed
--> Processing Dependency: runc >= 1.0.0 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: containerd >= 1.3.2 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: pigz for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: libcgroup for package: docker-19.03.6ce-4.amzn2.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be installed
---> Package libcgroup.x86_64 0:0.41-21.amzn2 will be installed
---> Package pigz.x86_64 0:2.3.4-1.amzn2.0.1 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package             Arch            Version                                         Repository                  Size
======================================================================================================================
Installing:
 docker              x86_64          19.03.6ce-4.amzn2                               amzn2extra-docker           37 M
Installing for dependencies:
 containerd          x86_64          1.3.2-1.amzn2                                   amzn2extra-docker           24 M
 libcgroup           x86_64          0.41-21.amzn2                                   amzn2-core                  66 k
 pigz                x86_64          2.3.4-1.amzn2.0.1                               amzn2-core                  81 k
 runc                x86_64          1.0.0-0.1.20200204.gitdc9208a.amzn2             amzn2extra-docker          2.6 M

Transaction Summary
======================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 65 M
Installed size: 271 M
Downloading packages:
(1/5): libcgroup-0.41-21.amzn2.x86_64.rpm                                                      |  66 kB  00:00:00     
(2/5): pigz-2.3.4-1.amzn2.0.1.x86_64.rpm                                                       |  81 kB  00:00:00     
(3/5): containerd-1.3.2-1.amzn2.x86_64.rpm                                                     |  24 MB  00:00:00     
(4/5): docker-19.03.6ce-4.amzn2.x86_64.rpm                                                     |  37 MB  00:00:00     
(5/5): runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64.rpm                                     | 2.6 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                  67 MB/s |  65 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    1/5 
  Installing : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Installing : libcgroup-0.41-21.amzn2.x86_64                                                                     3/5 
  Installing : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      4/5 
  Installing : docker-19.03.6ce-4.amzn2.x86_64                                                                    5/5 
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/5 
  Verifying  : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Verifying  : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      3/5 
  Verifying  : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    4/5 
  Verifying  : libcgroup-0.41-21.amzn2.x86_64                                                                     5/5 

Installed:
  docker.x86_64 0:19.03.6ce-4.amzn2                                                                                   

Dependency Installed:
  containerd.x86_64 0:1.3.2-1.amzn2                 libcgroup.x86_64 0:0.41-21.amzn2 pigz.x86_64 0:2.3.4-1.amzn2.0.1
  runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2

Complete!
$
```
## 起動
```sh
$ sudo systemctl start docker.service
$ 
$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-06-17 15:53:56 UTC; 16s ago
     Docs: https://docs.docker.com
  Process: 4765 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
  Process: 4755 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
 Main PID: 4772 (dockerd)
    Tasks: 8
   Memory: 35.8M
   CGroup: /system.slice/docker.service
           └─4772 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1...

Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582692...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582884...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8583027...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8813748..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.1582849..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2082072..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2355901...e
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2360941..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker Application Container....
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2675511..."
Hint: Some lines were ellipsized, use -l to show in full.
$ 
```

## 自動起動設定
```sh
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.serv
ice.
$
$ sudo systemctl list-unit-files | grep docker.service
docker.service          enabled 
$ 
```

## ec2-userのセカンダリグループにdockerを追加
root権限以外のユーザーでdockerコマンドを実行するには
毎回sudoするか、dockerグループに所属するかのいずれかが必要。
ここではグループ追加をしておく。

```sh
$ sudo usermod -a -G docker ec2-user
$
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
$ 
```
グループ追加がカレントシェルに反映されていない。
一旦ログアウトして接続し直してから再びidコマンド。

```sh
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal),993(docker)
$ 
```
グループ追加が反映された。

## dockerコマンドが実行できることの確認
```sh
$ docker --version
Docker version 19.03.6-ce, build 369ce74
$ 
```

## docker-composeインストール
docker-composeは複数のコンテナのビルドや起動/停止をまとめて行うことが出来るツール。
使い方は ①dockerfile作成 ②docker-compose.yml作成 ③docker-compose実行 といった流れ。
まずはdocker公式に書かれているコマンドでインストール。
https://docs.docker.com/compose/install/

```sh
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compos
e-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   2006      0 --:--:-- --:--:-- --:--:--  2006
100 11.6M  100 11.6M    0     0  3325k      0  0:00:03  0:00:03 --:--:-- 4044k
$ 
$ sudo chmod +x /usr/local/bin/docker-compose
$ 
```

## docker-composeコマンドが実行できることの確認
```sh
$ dockser-compose --version
docker-compose version 1.26.0, build d4451659
$ 
```



　
　

以上です。おつかれさまでした。