我在Ubuntu 20.04下的AWS示例上使用postgres:12
Docker镜像。
postgres-tests:
image: "postgres:12"
restart: always
command: postgres -c 'max_connections=200'
environment:
POSTGRES_DB: "${POSTGRES_DATABASE}"
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
ports:
- "8396:5432"
使用docker-compose up -d
运行此容器时,无法启动,并出现以下错误:
postgres-tests_1 | popen failure: Cannot allocate memory
postgres-tests_1 | initdb: error: The program "postgres" is needed by initdb but was not found in the
postgres-tests_1 | same directory as "/usr/lib/postgresql/12/bin/initdb".
postgres-tests_1 | Check your installation.
最新项目部署后突然出现错误。重要的是,错误只发生在这个特定的容器上。机器上还有一个postgresql:12
容器用于另一个项目,工作正常。
以下是我尝试的:
1.我发现了几个与增加控制机器上共享内存的shmall
/shmmax
参数有关的建议。
但是这些系统参数已经设置为高值:
ubuntu@ip-172-31-10-246:/var/www$ cat /proc/sys/kernel/shmall
18446744073692774399
ubuntu@ip-172-31-10-246:/var/www$ cat /proc/sys/kernel/shmmax
18446744073692774399
ubuntu@ip-172-31-10-246:/var/www$
1.第二个建议是尝试更新postgres镜像。使用postgres 13.0、14.0进行测试,无影响。更新尝试了postgres:11
图像,它运行正常,但我不能在生产中滚动postgres版本,所以它不是我的情况下的解决方案。
1.我尝试停止/启动并重新启动示例,同时使用docker system prune
和docker volumes prune
清理docker缓存。
Software:
Ubuntu 20.04.2
Docker version 20.10.8, build 3967b7d
Instance hardware:
Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
RAM: 4/8GB Used by system and other services
Swap: 4.5/20GB Used by system and other services
1条答案
按热度按时间b1zrtrql1#
看起来像是Docker
5:20.10.8~3-0~ubuntu-focal
和官方postgres:12
镜像的最近更新之间的某种版本不兼容。将Docker更新为
5:23.0.6-1~ubuntu.20.04~focal
解决了这个问题。