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
教訓
困ったら公式を読め