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

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

More than 1 year has passed since last update.

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

教訓

困ったら公式を読め

ajitator
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