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

Amazon Linux2 にdockerをインストールしようとしたらはまった話

Amazon Linuxはちょっと違うので備忘録。
2019/11/15日時点での対応

Amazon Linux2にDockerのインストールを試みる

ちょっと簡単に開発環境を作りたかったので、EC2上にDockerをインストールしようとしました。
DockerはいつもCentOS方式でインストールしてましたんで、ここを参照しながらインストール。

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
 --add-repo \
 https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

すると、依存性の関係でエラーが発生

$ sudo yum install docker-ce docker-ce-cli containerd.io
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
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                                                                                       |  37 kB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
〜 略 〜
エラー: パッケージ: containerd.io-1.2.10-3.2.el7.x86_64 (docker-ce-stable)
             要求: container-selinux >= 2:2.74
エラー: パッケージ: 3:docker-ce-19.03.5-3.el7.x86_64 (docker-ce-stable)
             要求: container-selinux >= 2:2.74
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

oh。マジか。どうやらcontainer-selinuxのバージョンが合わないよ、とのこと。

助けてGoogle先生

ということで色々漁ってみた結果、CentOSのリポジトリから対象のバージョンをダウンロードするも、今度selinux-policyの依存性でエラーが。

$ sudo yum install ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm
〜 略 〜
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy-base >= 3.13.1-216.el7
            インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-minimum-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-minimum-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
            利用可能: selinux-policy-minimum-3.13.1-192.amzn2.6.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-mls-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-mls-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
            利用可能: selinux-policy-mls-3.13.1-192.amzn2.6.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy-targeted >= 3.13.1-216.el7
            インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy-targeted = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-targeted = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-targeted = 3.13.1-166.amzn2.9
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy >= 3.13.1-216.el7
            インストール: selinux-policy-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy = 3.13.1-166.amzn2.9
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

めんどくせえ・・・orz

回り回って公式にたどり着いた

んで、どうしたもんかなと。
依存性の解決をいちいちやりたくないなー・・・、かといってECS使う程ガチな環境じゃないんだよなー・・・とか思ってECSのページを見ると、Amazon LinuxへのDockerインストールマニュアルが偶然見つかりました。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/docker-basics.html

$ sudo yum update -y

パッケージをアップデートして・・・

$ sudo amazon-linux-extras install docker

Extraリポジトリからdockerをインストールして・・・

$ sudo service docker start

サービスを起動

$ sudo service docker start
Redirecting to /bin/systemctl start docker.service
$ ps -ef |grep docker
root     12642     1  1 10:25 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1024:4096
ec2-user 12818  3438  0 10:25 pts/0    00:00:00 grep --color=auto docker

こんな簡単やったんか・・・orz

教訓

困ったら公式を読め

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
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