🐳

Amazon Linux 2 で Docker がハングする

6 min read

課題

Amazon Linux 2 で Docker をインストール sudo amazon-linux-extras install docker すると latest である 20.10.4 がインストールされるようになりました。(2021年5月現在)
しかしこのバージョンは docker start --attach でハングするバグがあり 20.10.5 で修正されています。

直接 docker start --attach を使っていなくても docker-compose run などの内部で docker start --attach が実行されるとハングします。(--verbose オプションを付けて確認)

Docker >= 20.10.5 へバージョンアップ

現在はできないようです。

Docker 20.10.4 でのワークアラウンド

https://github.com/moby/moby/issues/42093#issuecomment-789072537

環境変数に COMPOSE_INTERACTIVE_NO_CLI=1 を設定すると回避できるようです。

docker-compose run-T オプションを指定して実行するだけではダメでした。

Docker 19.03.13 をインストールする

普通にインストールしようとしてもうまくいかない
$ amazon-linux-extras list
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
$ yum --showduplicates list docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Available Packages
docker.x86_64    17.06.2ce-1.102.amzn2    amzn2extra-docker
docker.x86_64    17.12.1ce-2.amzn2        amzn2extra-docker
docker.x86_64    18.03.1ce-2.amzn2        amzn2extra-docker
docker.x86_64    18.03.1ce-3.amzn2        amzn2extra-docker
docker.x86_64    18.03.1ce-5.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-2.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-4.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-5.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-6.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-7.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-8.amzn2        amzn2extra-docker
docker.x86_64    18.06.1ce-10.amzn2       amzn2extra-docker
docker.x86_64    18.09.9ce-2.amzn2        amzn2extra-docker
docker.x86_64    19.03.6ce-1.amzn2        amzn2extra-docker
docker.x86_64    19.03.6ce-2.amzn2        amzn2extra-docker
docker.x86_64    19.03.6ce-3.amzn2        amzn2extra-docker
docker.x86_64    19.03.6ce-4.amzn2        amzn2extra-docker
docker.x86_64    19.03.13ce-1.amzn2       amzn2extra-docker
docker.x86_64    20.10.4-1.amzn2          amzn2extra-docker
$ sudo amazon-linux-extras install docker=19.03.13
Installing docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker
12 metadata files removed
4 sqlite files removed
0 metadata files removed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                            | 3.7 kB  00:00:00     
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/extras/docker/19.03.13/x86_64/mirror.list error was
14: HTTPS Error 403 - Forbidden
(1/3): amzn2-core/2/x86_64/group_gz                                                                                                                   | 2.5 kB  00:00:00     
(2/3): amzn2-core/2/x86_64/updateinfo                                                                                                                 | 367 kB  00:00:00     
(3/3): amzn2-core/2/x86_64/primary_db                                                                                                                 |  52 MB  00:00:01     
No package docker available.
Error: Nothing to do


docker is available in Amazon Linux Extra topic "docker"

To use, run
# sudo amazon-linux-extras install docker

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras


Installation failed. Check that you have permissions to install.

一度 amazon-linux-extras install を実行してしまうと yum install しようとしてもダメ。

$ sudo yum install docker-19.03.13ce-1.amzn2.x86_64
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/extras/docker/19.03.13/x86_64/mirror.list error was
14: HTTPS Error 403 - Forbidden
No package docker-19.03.13ce-1.amzn2.x86_64 available.
Error: Nothing to do

metadata を消して yum install してもダメ。

$ sudo yum clean metadata
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker
5 metadata files removed
2 sqlite files removed
0 metadata files removed
$ sudo yum install docker-19.03.13ce-1.amzn2.x86_64
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                            | 3.7 kB  00:00:00     
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/extras/docker/19.03.13/x86_64/mirror.list error was
14: HTTPS Error 403 - Forbidden
(1/3): amzn2-core/2/x86_64/group_gz                                                                                                                   | 2.5 kB  00:00:00     
(2/3): amzn2-core/2/x86_64/updateinfo                                                                                                                 | 367 kB  00:00:00     
(3/3): amzn2-core/2/x86_64/primary_db                                                                                                                 |  52 MB  00:00:01     
No package docker-19.03.13ce-1.amzn2.x86_64 available.
Error: Nothing to do

起動直後の真っ新な状態で yum install するか、

$ sudo yum install docker-19.03.13ce-1.amzn2.x86_64

一度 amazon-linux-extras install を実行してしまうとうまくいかないようなので docker を有効化しなおして metadata をクリアするといいようです。

$ sudo amazon-linux-extras enable docker
$ sudo yum clean metadata
$ sudo yum install docker-19.03.13ce-1.amzn2.x86_64
$ docker -v
Docker version 19.03.13-ce, build 4484c46

Discussion

ログインするとコメントできます