Я запускаю Docker Desktop в Arch Linux и использую docker Compose для запуска локального стека разработки.
Когда контейнер не запускается из-за конфликта портов, контейнер останавливается, но процессы docker-proxy продолжают работать и продолжают связывать порты хоста.
Docker сообщает о том, что порты свободны (docker ps не показывает ничего связанного), но ОС сообщает, что порты все еще заняты использование.
Это предотвращает перезапуск контейнеров до тех пор, пока прокси-процессы не будут завершены вручную.
Необработанная ошибка после запуска docker compose up -d:
`Ответ об ошибке от демона: порты недоступны: открытый порт TCP 0.0.0.0:8025 -> 127.0.0.1:0: прослушивать tcp4 0.0.0.0:8025: привязка: адрес уже используется`
Шаги по воспроизведению:
1. Запустите Docker Desktop в Arch Linux
2. Запустите docker Compose Up с привязкой службы к порту хоста (например, 8025, 8081, 444)
3. Контейнер выходит из строя с сообщением «привязка: адрес уже используется»
4. Контейнер останавливается и не отображается в `docker ps`
5. Порт остается привязанным в соответствии с `ss -ltnp`
Дополнительная информация/выполнено устранение неполадок:
Работает - sudo ss -ltnp | grep 8025, выходные данные:
Код: Выделить всё
LISTEN 0 4096 0.0.0.0:8025 0.0.0.0:* users:(("docker-proxy",pid=2050,fd=8))
LISTEN 0 4096 [::]:8025 [::]:* users:(("docker-proxy",pid=2057,fd=8))
Завершение процесса docker-proxy вручную освобождает порт:
Код: Выделить всё
sudo ss -ltnp | grep (affected port)
Код: Выделить всё
sudo kill -9
Однако это не полный обходной путь:
- При каждом перезапуске требуется ручное вмешательство.
- Он не объясняет, почему порт остается связанным после завершения работы контейнера.
- После перезапуска через Docker Compose, контейнер WordPress представляет начальный экран установки, указывающий, что состояние приложения (данные базы данных и/или тома) не сохраняется между запусками
Подробнее здесь: https://stackoverflow.com/questions/798 ... -using-the
Мобильная версия