У меня проблемы с настройкой 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 не прослушивает ни один из запущенных мной портов "докер 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. Вы можете работать с идентификатором процесса и искать родительские идентификаторы, пока не найдете, что его запускает, или вытащите дерево процессов с помощью ps axjf
.