我在 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
。