🐶
【Docker CE/WSL】InRelease is not valid yet が発生したら WSL の時刻を更新しよう
Windows の WSL 環境で Docker CE 利用時に build が急に失敗するようになりました。
解決したので、備忘録として残します。
該当のエラーメッセージ
※適当に改行しています。
Release file for
http://deb.debian.org/debian-security/dists/bullseye-security/InRelease
is not valid yet (invalid for another XXmin XXs).
Updates for this repository will not be applied.
要約
- PC(Windows) 側と WSL 内部の時刻がずれていることが原因
- hwclock コマンドを試すか WSL を再起動して時刻を更新する
経緯
- ローカル PC で
docker up -d
したまま PC をスリープし、1時間ほど放置。 - 1時間後、docker-compose.yml を更新し
docker compose build
- 上記のエラーが発生。build に失敗した。
apt-get が失敗していた
build ログを細かく見てみたところ下記のように、apt-get
で失敗していたことがわかります。
エラーメッセージを翻訳すると、「リリースファイルがまだ有効ではありません」みたいな感じのことを言われていることがわかります。
------
> [rails 2/12] RUN apt-get update -qq && apt-get install -y vim:
2.104 E: Release file for http://deb.debian.org/debian-security/dists/bullseye-security/InRelease is not valid yet (invalid for another XXmin XXs). Updates for this repository will not be applied.
------
failed to solve: process "/bin/sh -c apt-get update -qq && apt-get install -y vim" did not complete successfully: exit code: 100
PC と WSL で時刻がずれていると発生するらしい
とにかく時刻がずれていると、apt-get
に失敗するらしい。
上記記事にならって、date
コマンドを実行して WSL の時刻を確認します。
$ date
>Tue Dec 19 14:50:01 JST 2023
このとき15時30分を回っていたと記憶しているので、約40分とかなりずれていることがわかります。
【解決】とりあえず WSL を再起動する
WSL を再起動するために、powershell で下記コマンドを実行
wsl --shutdown
WSL 側のターミナルで下記のように表示されるので、そのまま再起動 → docker compose build
する
[プロセスはコード 1 (0x00000001) で終了しました]
このターミナルを Ctrl+D で閉じるか、Enter キーを押して再起動できます。
$docker compose build --no-cache
hwclock で時刻を更新してもいいらしい
下記のようにシステム・クロックをハードウェア・クロックに合わせる hwclock
コマンドで時刻を更新してもいいそうです。
#WSL で実行
$ sudo hwclock --hctosys
--hctosys オプションはシステム・クロックをハードウェア・クロックに合わせるオプションです。
参考
おわり
ありがとうございました。
Discussion