趣味活動で unbound の dnstap とか EDNS Client Subnet の挙動を確認したかったので、unbound のコンテナイメージを作っていたんだけど、最後に /usr/local/etc/unbound
以下の環境を作るところで、エラー終了してホゲーとなっていた。問題になっていたのは以下の RUN
命令部分。
RUN addgroup unbound && adduser -S -G unbound unbound && \ /usr/local/sbin/unbound-control-setup && \ /usr/local/sbin/unbound-anchor -a /usr/local/etc/unbound/root.key && \ mkdir -p /usr/local/etc/unbound/dnstap && \ chown unbound:unbound /usr/local/etc/unbound/dnstap
で、ブログの表題でほとんどネタバレしているんだけど、原因になっていたのは /usr/local/sbin/unbound-anchor -a /usr/local/etc/unbound/root.key && \
の部分。unbound を運用している人にとっては当たり前かもしれないけど、unbound-anchor
でトラストアンカーを更新した時は終了コードが1になるらしい。unbound-anchor のマニュアルにも以下のようにキッチリ明示されている。
EXIT CODE This tool exits with value 1 if the root anchor was updated using the certificate or if the builtin root-anchor was used. It exits with code 0 if no update was necessary, if the update was possible with RFC5011 tracking, or if an error occurred.
You can check the exit value in this manner: unbound-anchor -a "root.key" || logger "Please check root.key" Or something more suitable for your operational environment.
しかも、解決方法も書いてあるし...
とりあえず、以下のように手元の Dockerfile を書き直して最後まで完走できることは確認した。
RUN addgroup unbound && adduser -S -G unbound unbound && \ unbound-control-setup && \ /usr/local/sbin/unbound-anchor -a /usr/local/etc/unbound/root.key || echo "hoge" && \ mkdir -p /usr/local/etc/unbound/dnstap && \ chown unbound:unbound /usr/local/etc/unbound/dnstap