postgres docker容器在raspberrypi上总是出错



我的rasbian上的postgresql总是出错!

但与nginx容器不同,

我的docker怎么了?

Nginx:

pi@raspberrypi:~$ docker run -it -e TZ=Asia/Shanghai nginx date
Mon Oct 25 14:12:45 CST 2021

Postgres:

pi@raspberrypi:~$ docker run -it postgres:alpine date
Tue Jun 30 15:19:12 UTC 2071

Postgres作用:

pi@raspberrypi:~$ docker run -it -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro postgres:12 date
Thu 01 Jan 1970 08:00:00 AM CST

我的docker信息如下:


pi@raspberrypi:~$ docker version
Client: Docker Engine - Community
Version:           20.10.9
API version:       1.41
Go version:        go1.16.8
Git commit:        c2ea9bc
Built:             Mon Oct  4 16:06:55 2021
OS/Arch:           linux/arm
Context:           default
Experimental:      true
Server: Docker Engine - Community
Engine:
Version:          20.10.9
API version:      1.41 (minimum version 1.12)
Go version:       go1.16.8
Git commit:       79ea9d3
Built:            Mon Oct  4 16:04:47 2021
OS/Arch:          linux/arm
Experimental:     false
containerd:
Version:          1.4.11
GitCommit:        5b46e404f6b9f661a205e28d59c982d3634148f8
runc:
Version:          1.0.2
GitCommit:        v1.0.2-0-g52b36a2
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

这似乎是树莓派上的libseccomp2库的问题。我也遇到了同样的问题,并最终通过遵循这个线程

中的步骤解决了它。添加以下内容到/etc/apt/sources.list:

deb http://raspbian.raspberrypi.org/raspbian/ testing main

运行apt update

执行命令apt-get install libseccomp2/testing

运行这些更新后,日期/时间应该反映您的主机。您可能还需要挂载/etc/localtime/etc/timezone以使所有内容匹配。

docker run -it -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro --entrypoint /bin/sh postgres

docker-compose.yml

services:
db:
container_name: postgres
image: postgres:latest
restart: unless-stopped
environment:
TZ: America/Chicago
PGTZ: America/Chicago
POSTGRES_DB: test
POSTGRES_USER: testing
POSTGRES_PASSWORD: password
volumes:
- /etc/localtime:/etc/localtime:ro