memcache 容器:启动用户空间代理时出错:监听 tcp 0.0.0.0:11211:绑定:地址已在使用中

memcache 容器:启动用户空间代理时出错:监听 tcp 0.0.0.0:11211:绑定:地址已在使用中

我在 docker 上设置 memcached 时遇到问题。运行时出现错误:docker run --name=memcache -p 11211:11211 -d memcached memcached -m 128

这是运行上述命令后出现的错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint memcache (9f4bd30f7253ee185f6a160ef8e89d3f3c2d46f0361ec15f11a6975477c19430): Error starting userland proxy: listen tcp 0.0.0.0:11211: bind: address already in use.

最后它说所选端口已被占用。因此,为了确认 memcached 没有监听任何端口,我运行了“docker ps -a“,输出结果如下:

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                  NAMES
116acff4b1aa        memcached            "docker-entrypoint.s…"   10 minutes ago      Created                                    memcache
a4e1a6168bca        staticwebserver:v3   "/init.sh"               2 weeks ago         Up 16 hours         0.0.0.0:8002->80/tcp   lucid_mccarthy
a27174f8a988        staticwebserver:v3   "/init.sh"               2 weeks ago         Up 16 hours         0.0.0.0:8001->80/tcp   thirsty_shockley

由于我看不到容器(memcached)监听任何端口,我想看看哪个进程已经在监听端口 11211。所以我运行了netstat -pna |复制代码

tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      5703/memcached

我很困惑,memcached 能用吗?还是出了什么问题?

我试图杀死恶魔,但是我杀死它之后它又再次出现了。

答案1

您似乎正在同一端口上运行容器外的 memcached 实例。您需要停止该外部实例,或选择不同的端口在主机上发布。对于停止外部实例,这取决于您如何启动它,也许是在 systemd 中。您可以从进程 ID 开始,然后查找父进程 ID,直到找到启动它的进程,或者使用 拉出进程树ps axjf

相关内容