运行时:无法在 Docker 中创建新的操作系统线程(已经有 2 个;errno=22):Elasticsearch
Posted
技术标签:
【中文标题】运行时:无法在 Docker 中创建新的操作系统线程(已经有 2 个;errno=22):Elasticsearch【英文标题】:runtime: failed to create new OS thread (have 2 already; errno=22) in Docker: Elasticsearch 【发布时间】:2022-01-02 16:00:48 【问题描述】:我在我的 docker compose 中提取 Elasticsearch 图像。看起来是这样的
es:
image: elasticsearch:5.6.4
restart: "always"
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
ports:
- "9200:9200"
- "9300:9300"
我收到了这个错误:
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
我添加了platform: linux/amd64
来解决此错误,但现在当我运行 docker-compose 时,我收到以下错误:
es_1 | runtime: failed to create new OS thread (have 2 already; errno=22)
es_1 | fatal error: newosproc
es_1 |
es_1 | runtime stack:
es_1 | runtime.throw(0x4cb21f, 0x9)
es_1 | /usr/local/go/src/runtime/panic.go:566 +0x95
es_1 | runtime.newosproc(0xc420026000, 0xc420035fc0)
es_1 | /usr/local/go/src/runtime/os_linux.go:160 +0x194
es_1 | runtime.newm(0x4d6db8, 0x0)
es_1 | /usr/local/go/src/runtime/proc.go:1572 +0x132
es_1 | runtime.main.func1()
es_1 | /usr/local/go/src/runtime/proc.go:126 +0x36
es_1 | runtime.systemstack(0x53ae00)
es_1 | /usr/local/go/src/runtime/asm_amd64.s:298 +0x79
es_1 | runtime.mstart()
es_1 | /usr/local/go/src/runtime/proc.go:1079
es_1 |
es_1 | goroutine 1 [running]:
es_1 | runtime.systemstack_switch()
es_1 | /usr/local/go/src/runtime/asm_amd64.s:252 fp=0xc420020768 sp=0xc420020760
es_1 | runtime.main()
es_1 | /usr/local/go/src/runtime/proc.go:127 +0x6c fp=0xc4200207c0 sp=0xc420020768
es_1 | runtime.goexit()
我可能会错过什么?
【问题讨论】:
【参考方案1】:发布的答案基本上是正确的。如果这是用于本地开发,我只需创建一个 docker-compose.override.yml 文件并使用来自here 的适当文件覆盖该图像。
es:
image: elasticsearch:7.14.2
(7.14.2
似乎适合您的平台)
【讨论】:
【参考方案2】:您可以尝试使用为您的 mac 制作的另一张图片,该图片应该更适合 arm64:
https://hub.docker.com/r/arm64v8/elasticsearch/
【讨论】:
以上是关于运行时:无法在 Docker 中创建新的操作系统线程(已经有 2 个;errno=22):Elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章