Jas*_*ane 11 nodejs docker 16.04 20.04 22.04
如果不是就在我面前,我都不会相信。
所以这显然是一个老主机,我什至不是在寻找解决方案,只是告诉你我所看到的,这样下一个可怜的灵魂在谷歌上搜索这些废话就不会感到那么孤独。
docker run -ti ubuntu:22.04 /bin/bash
# apt update; apt install nodejs
...
E: Problem executing scripts DPkg::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
E: Sub-process returned an error code
root@f0bb472a2a44:/# nodejs
nodejs[2608]: ../src/node_platform.cc:61:std::unique_ptr<long unsigned int> node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Start(): Assertion `(0) == (uv_thread_create(t.get(), start_thread, this))' failed.
1: 0x7f620e2893cc node::Abort() [/lib/x86_64-linux-gnu/libnode.so.72]
2: 0x7f620e28945b [/lib/x86_64-linux-gnu/libnode.so.72]
3: 0x7f620e30bde2 node::WorkerThreadsTaskRunner::WorkerThreadsTaskRunner(int) [/lib/x86_64-linux-gnu/libnode.so.72]
4: 0x7f620e30bf16 node::NodePlatform::NodePlatform(int, v8::TracingController*) [/lib/x86_64-linux-gnu/libnode.so.72]
5: 0x7f620e2542c8 node::InitializeOncePerProcess(int, char**) [/lib/x86_64-linux-gnu/libnode.so.72]
6: 0x7f620e2544ac node::Start(int, char**) [/lib/x86_64-linux-gnu/libnode.so.72]
7: 0x7f620d7c2d90 [/lib/x86_64-linux-gnu/libc.so.6]
8: 0x7f620d7c2e40 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6]
9: 0x5563adef00f5 _start [nodejs]
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
在同一主机上执行相同的操作,但从以下开始
docker run -ti ubuntu:20.04 /bin/bash
Run Code Online (Sandbox Code Playgroud)
和..没问题。当主机为 20.04 时,两者也都可以工作。不仅仅是nodejs。
root@f0bb472a2a44:/# curl www.google.com
curl: (6) getaddrinfo() thread failed to start
Run Code Online (Sandbox Code Playgroud)
很奇怪。我发现 16.04 w/Epyc 不工作,而 20.04/Xeon 工作。如果有人可以复制我很好奇。内存充足,pid 计数和线程计数相对较低,总体系统负载适中。
为了完整起见,我在 ubuntu:21.10 上尝试了同样的操作,它也有效。
是什么导致 docker 22.04 中这些线程创建失败?主机内核?底层硬件?还有别的事吗?
小智 9
我能够从 ubuntu:20.04 主机运行 ubuntu:22.04 重现此问题。我相信这是 glibc 的 seccomp 问题,因为我可以使用选项运行它--security-opt seccomp=unconfined
这对我来说运行得很干净:
sudo docker run -it --security-opt seccomp=unconfined ubuntu:22.04 /bin/bash -c "apt update; apt install -y curl; curl www.google.com
Run Code Online (Sandbox Code Playgroud)
有关 docker seccomp 安全性的更多信息: https ://docs.docker.com/engine/security/seccomp/
| 归档时间: |
|
| 查看次数: |
12896 次 |
| 最近记录: |