座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Dockerでarchlinuxのイメージを使うときの注意

archlinuxのDockerイメージは base/archlinux である (Docker - ArchWiki). docker pull base/archlinux でイメージを取得, docker run -it base/archlinux bash などでコンテナを起動できる.

このイメージからコンテナを立ち上げて, パッケージを最新化 (# pacman -Syu) しようとすると, うまくいかない.

[root@94ec9874d853 /]# pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community                  3.6 MiB  3.63M/s 00:01 [######################] 100%
:: Starting full system upgrade...
:: Replace dirmngr with core/gnupg? [Y/n]
:: Replace libdbus with core/dbus? [Y/n]
:: Replace lzo2 with core/lzo? [Y/n]

パッケージのダウンロード後には次のメッセージとエラーが出て, インストールを続行できない.

downloading required keys...
:: Import PGP key 4096R/, "Seblu <seblu@seblu.net>", created: 2011-11-11? [Y/n]
error: key "Seblu <seblu@seblu.net>" could not be imported
:: Import PGP key 4096R/, "Seblu <seblu@seblu.net>", created: 2011-11-11? [Y/n]
error: key "Seblu <seblu@seblu.net>" could not be imported
:: Import PGP key 2048R/, "Christian Hesse (Arch Linux Package Signing) <arch@eworm.de>", created: 2011-08-12? [Y/n]
error: key "Christian Hesse (Arch Linux Package Signing) <arch@eworm.de>" could not be imported
:: Import PGP key 4096R/, "Antonio Rojas <arojas@us.es>", created: 2014-10-21? [Y/n]
error: key "Antonio Rojas <arojas@us.es>" could not be imported
error: required key missing from keyring
error: failed to commit transaction (unexpected error)
Errors occurred, no packages were upgraded.
[root@94ec9874d853 /]#

GnuPGの暗号化/公開鍵あたりで問題になっていることまではわかる.

直接の原因とはいえないが, 理由のひとつはベースイメージのarchlinuxが古すぎること. docker pull base/archlinux コマンドはタグを指定しなければ latest タグでイメージを取得してくるが, これが2014/7/3に作られたスナップショットを元にしたイメージになっている.

タグを付与したコマンド docker pull base/archlinux:2015.06.01 で取得したイメージを使えば, ちゃんとパッケージをアップグレードすることができる. 指定できるタグは Docker Hub のbase/archlinux で確認できる.

とりあえずこれで問題なく使えることはわかったが, 最も新しいスナップショットで2015年7月だし, latestで古いイメージが戻されちゃうし, あまりメンテナンスされていないらしい. あえてベースイメージにarchlinuxを使うことは少ないと思うし, そんなに気にならないけど.

広告を非表示にする