我在我的 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 | grep 11211
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 5703/memcached
在这里我很困惑,memcached 工作吗?还是有什么问题?
我试图杀死恶魔,但在我杀死它的那一刻它又弹出来了。
您似乎在同一端口上的容器外部运行 memcached 实例。您需要停止该外部实例,或者选择一个不同的端口来发布主机。对于停止外部实例,这取决于您如何启动它,也许它在 systemd 中。您可以从进程 id 开始工作并查找父 pid,直到找到启动它的内容,或者使用
ps axjf
.