尝试定义套接字类型时出现以下错误(“不允许操作”)。
root@44e95193982d:/# python3
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import zmq
>>> zmq.__version__
'24.0.1'
>>> context = zmq.Context()
>>> socket = context.socket(zmq.SUB)
Operation not permitted (src/thread.cpp:269)
Aborted (core dumped)
因为我以
root
方式运行所有内容,所以我不应该出现 Operation not permitted
错误。
奇怪的是,我在容器内运行此代码,并且根据主机的不同,它可能会或可能不会崩溃。此外,在同一台有问题的主机上,另一个容器中的 zmq 版本明显较旧(版本 16.0.2)可以正常工作。
由于错误消息不是很具有描述性,我什至不知道如何开始调试。
因此,主机中使用的 docker 版本存在问题,与某些基础镜像的 python 线程不兼容。使用
FROM debian:buster-slim
作为基础图像是一种解决方法。
我仍然不知道这个问题的根本原因和正确的解决方案。