运行时:无法在 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的主要内容,如果未能解决你的问题,请参考以下文章

在JNI中创建新对象

sh 在Docker中创建新数据库

在laravel中创建新数据时无法按类别保存计算数据

无法在 android studio 中创建新活动

无法在 Visual Studio 2013 中创建新的 Web 项目

无法在 iTunes Connect 中创建新应用