RasPi 上 redis:6-alpine 的损坏日期

corrupt date with redis:6-alpine on RasPi

我在 RasPi 4 (redis:6-alpine) 上的 docker 容器中 运行 redis。 Nextcloud 在另一个容器中使用它(通过 docker-compose)。 几天以来,redis 使用了 100% CPU 时间。

我现在看到容器中的 date/time 已损坏。 Redis貌似正常启动,但是日志sais

pi@tsht2:/data/nextcloud $ docker logs nextcloud_redis_1 
1:C 03 May 2071 14:21:28.000 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 03 May 2071 14:21:28.000 # Redis version=6.0.10, bits=32, commit=00000000, modified=0, pid=1, just started
1:C 03 May 2071 14:21:28.000 # Configuration loaded
1:M 03 May 2071 14:18:00.000 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
1:M 03 May 2071 14:20:40.000 * Running mode=standalone, port=6379.
1:M 03 May 2071 14:21:28.000 # Server initialized
1:M 03 May 2071 14:21:20.000 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 03 May 2071 14:21:28.000 * Ready to accept connections

看日期!

当我查看容器中的日期时,我得到

pi@tsht2:/data/nextcloud $ docker exec -it nextcloud_redis_1 date
Sun Jan  0 00:100:4174038  1900

我试图停止容器,删除镜像并重新启动任何东西,但我遇到了同样的问题。

那里发生了什么? 100% CPU 使用率与日期问题有关吗?

顺便说一句:其他容器显示正确的 date/time。

Raspbian 稳定版在 https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0#time64_requirements 中列出,其中包含过时的 libseccomp 版本(引用:... [要求] 主机 libseccomp 为 2.4.2 或更高版本...)。请注意,对于 Raspbian,libseccomp 称为 libseccomp2。在这种情况下:要么更新 libseccomp 和 Docker,要么使用旧映像。

时钟无法正常工作的问题似乎适用于过去几周内基于 Alpine Linux 构建的所有容器。根据我自己的经验,这包括 PostgreSQL 和 Python。这两个都失败了:PostgreSQL 遇到分段错误,Python 无法初始化其时钟。鉴于 Redis 是类似数据库的,如果缺少工作时钟也会破坏它,我不会感到惊讶。

(此问题似乎已解决)Alpine Linux 的 arm-v7 映像似乎是使用非功能时间组件构建的,请参阅 https://gitlab.alpinelinux.org/alpine/aports/-/issues/12346。这个问题应该通过使用旧图像(例如 redis:6.0.6-alpine3.12 似乎是 6 个月大)、等待固定构建出现或使用不使用 alpine 的构建来解决。