LoginSignup
10
7

More than 3 years have passed since last update.

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

Posted at

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

教訓

困ったら公式を読め

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7