EC2(Amazon Linux 2)にDocker CEをインストールしてみる。
インストール方法をググっているとDocker公式のCentOS向けインストール手順が出てきたので、Amazon Linux 2も同じRHEL系だからいけるいけるとやってみた。
※結果的にこの手順ではインストールできませんでした。成功した手順だけ見たい方は本ページ中ほどの "【再チャレンジ】amazon-linux-extrasでインストール" からご参照ください。
EC2インスタンスを立ち上げてSSHログイン済みのところからスタート。
インストール方法の選択
Docker CEのインストール方法はいくつかあるらしい。
~公式ドキュメントより引用~
・たいていのユーザは Docker のリポジトリをセットアップ して、そこからインストールしています。 インストールやアップグレードの作業が簡単だからです。 この方法をお勧めします。
・ユーザの中には RPM パッケージをダウンロードし、手動でインストールしている方もいます。 アップグレードも完全に手動となります。 この方法は、インターネットにアクセスできない環境で Docker をインストールするような場合には有用です。
・テスト環境や開発環境向けに、自動化された 便利なスクリプト を使って Docker のインストールを行うユーザもいます。
おすすめされているリポジトリを使ったインストールをやってみる。
リポジトリのセットアップ
yum-utils、device-mapper-persistent-data、lvm2をインストール。
$ sudo yum install -y yum-utils \
> device-mapper-persistent-data \
> lvm2
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
Package yum-utils-1.1.31-46.amzn2.0.1.noarch already installed and latest version
Package device-mapper-persistent-data-0.7.3-3.amzn2.x86_64 already installed and latest version
Package 7:lvm2-2.02.177-4.amzn2.0.2.x86_64 already installed and latest version
Nothing to do
$
既にインストール済みだった模様。
続いてリポジトリのセットアップ。
$ sudo yum-config-manager --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
$
Docker CEのインストール
$ sudo yum install docker-ce
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/x86_64/primary_db | 44 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 3:19.03.11-3.el7 will be installed
--> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Processing Dependency: containerd.io >= 1.2.2-3 for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Processing Dependency: docker-ce-cli for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be obsoleted
---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be obsoleting
--> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.13-3.2.el7.x86_64
---> Package docker-ce.x86_64 3:19.03.11-3.el7 will be installed
--> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.11-3.el7.x86_64
---> Package docker-ce-cli.x86_64 1:19.03.11-3.el7 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be obsoleted
--> Finished Dependency Resolution
Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
Error: Package: 3:docker-ce-19.03.11-3.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
$
エラーとなった。
同じRHEL系とは言えCentOS向けだしなぁと思いつつ解決策をググっていると同じエラーになっている方がいたのでお知恵を拝借。どうも先にインストールしたdocker-ce.repoが悪さをしている模様。AWSにもAmazon Linux 2にDocker CEをインストールする方法が載っているとのことで、そちらを実行してみる。
【再チャレンジ】amazon-linux-extrasでインストール
$ sudo amazon-linux-extras install docker
Installing docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker docker-ce-stable
13 metadata files removed
6 sqlite files removed
0 metadata files removed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
amzn2extra-docker | 3.0 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
(1/7): amzn2-core/2/x86_64/group_gz | 2.5 kB 00:00:00
(2/7): amzn2-core/2/x86_64/updateinfo | 218 kB 00:00:00
(3/7): amzn2extra-docker/2/x86_64/updateinfo | 69 B 00:00:00
(4/7): amzn2extra-docker/2/x86_64/primary_db | 68 kB 00:00:00
(5/7): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
(6/7): docker-ce-stable/x86_64/primary_db | 44 kB 00:00:00
(7/7): amzn2-core/2/x86_64/primary_db | 41 MB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.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
Transaction Summary
==================================================================================================
Install 1 Package
Total download size: 37 M
Installed size: 161 M
Is this ok [y/d/N]: y
Downloading packages:
docker-19.03.6ce-4.amzn2.x86_64.rpm | 37 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : docker-19.03.6ce-4.amzn2.x86_64 1/1
Verifying : docker-19.03.6ce-4.amzn2.x86_64 1/1
Installed:
docker.x86_64 0:19.03.6ce-4.amzn2
Complete!
0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
5 postgresql9.6 available \
[ =9.6.6 =9.6.8 =stable ]
6 postgresql10 available [ =10 =stable ]
8 redis4.0 available \
[ =4.0.5 =4.0.10 =stable ]
9 R3.4 available [ =3.4.3 =stable ]
10 rust1 available \
[ =1.22.1 =1.26.0 =1.26.1 =1.27.2 =1.31.0 =1.38.0
=stable ]
11 vim available [ =8.0 =stable ]
13 ruby2.4 available \
[ =2.4.2 =2.4.4 =2.4.7 =stable ]
15 php7.2 available \
[ =7.2.0 =7.2.4 =7.2.5 =7.2.8 =7.2.11 =7.2.13 =7.2.14
=7.2.16 =7.2.17 =7.2.19 =7.2.21 =7.2.22 =7.2.23
=7.2.24 =7.2.26 =stable ]
17 lamp-mariadb10.2-php7.2 available \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 =10.2.10_7.2.16 =10.2.10_7.2.17
=10.2.10_7.2.19 =10.2.10_7.2.22 =10.2.10_7.2.23
=10.2.10_7.2.24 =stable ]
18 libreoffice available \
[ =5.0.6.2_15 =5.3.6.1 =stable ]
19 gimp available [ =2.8.22 ]
20 docker=latest enabled \
[ =17.12.1 =18.03.1 =18.06.1 =18.09.9 =stable ]
21 mate-desktop1.x available \
[ =1.19.0 =1.20.0 =stable ]
22 GraphicsMagick1.3 available \
[ =1.3.29 =1.3.32 =1.3.34 =stable ]
23 tomcat8.5 available \
[ =8.5.31 =8.5.32 =8.5.38 =8.5.40 =8.5.42 =8.5.50
=stable ]
24 epel available [ =7.11 =stable ]
25 testing available [ =1.0 =stable ]
26 ecs available [ =stable ]
27 corretto8 available \
[ =1.8.0_192 =1.8.0_202 =1.8.0_212 =1.8.0_222 =1.8.0_232
=1.8.0_242 =stable ]
28 firecracker available [ =0.11 =stable ]
29 golang1.11 available \
[ =1.11.3 =1.11.11 =1.11.13 =stable ]
30 squid4 available [ =4 =stable ]
31 php7.3 available \
[ =7.3.2 =7.3.3 =7.3.4 =7.3.6 =7.3.8 =7.3.9 =7.3.10
=7.3.11 =7.3.13 =stable ]
32 lustre2.10 available \
[ =2.10.5 =2.10.8 =stable ]
33 java-openjdk11 available [ =11 =stable ]
34 lynis available [ =stable ]
35 kernel-ng available [ =stable ]
36 BCC available [ =0.x =stable ]
37 mono available [ =5.x =stable ]
38 nginx1 available [ =stable ]
39 ruby2.6 available [ =2.6 =stable ]
40 mock available [ =stable ]
41 postgresql11 available [ =11 =stable ]
42 php7.4 available [ =stable ]
43 livepatch available [ =stable ]
44 python3.8 available [ =stable ]
[ec2-user@ip-172-31-14-246 ~]$
インストール成功。
ec2-userのセカンダリグループにdockerを追加
毎回sudoしなくていいようにdockerをグループ追加をしておく。
$ 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)
$
docker起動
$ 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 Thu 2020-06-18 17:12:07 UTC; 9s ago
Docs: https://docs.docker.com
Process: 6680 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
Process: 6662 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
Main PID: 6687 (dockerd)
Tasks: 8
Memory: 45.5M
CGroup: /system.slice/docker.service
mq6687 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --defa...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker App...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Hint: Some lines were ellipsized, use -l to show in full.
$
$
$
$ docker --version
Docker version 19.03.6-ce, build 369ce74
$
自動起動設定
$ sudo systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
$
$ sudo systemctl list-unit-files | grep docker.service
docker.service enabled
$
最後にCentoOS向け手順で設定したリポジトリは不要っぽいので削除。
$ cd /etc/yum.repos.d
$
$ ls -l
total 12
-rw-r--r-- 1 root root 985 Nov 1 2019 amzn2-core.repo
-rw-r--r-- 1 root root 1015 Jun 18 16:59 amzn2-extras.repo
-rw-r--r-- 1 root root 2424 Oct 18 2019 docker-ce.repo
$
$ sudo rm -f docker-ce.repo
$
$
$ docker --version
Docker version 19.03.6-ce, build 369ce74
$
以上です。おつかれさまでした。