Устранение ошибки «Docker Failed: порт уже выделен» — методы и примеры кода

При работе с Docker вы можете столкнуться с сообщением об ошибке «Ошибка Docker: порт уже выделен». Эта ошибка возникает, когда возникает конфликт с распределением портов, то есть порт, который вы пытаетесь использовать, уже используется другим процессом или контейнером. В этой записи блога мы рассмотрим различные способы устранения этой ошибки, а также приведем примеры кода, которые помогут вам понять каждый подход.

Методы устранения ошибки «Ошибка Docker: порт уже выделен»:

  1. Найдите и остановите конфликтный процесс:

    • Используйте следующую команду, чтобы идентифицировать процесс, использующий порт:
      sudo lsof -i :<port_number>
    • После того как вы определили процесс, остановите его, используя:
      kill <process_id>
  2. Изменить сопоставление портов контейнера Docker:

    • Измените сопоставление портов в команде запуска Docker или файле Docker Compose, чтобы использовать другой доступный порт. Например:
      docker run -p <host_port>:<container_port> <image_name>
  3. Остановить и удалить конфликтующие контейнеры Docker:

    • Перечислите все запущенные контейнеры, используя:
      docker ps
    • Остановите конфликтующий контейнер, используя:
      docker stop <container_id>
    • Удалите остановленный контейнер, используя:
      docker rm <container_id>
  4. Перезапустите службу Docker:

    • Перезапустите службу Docker, чтобы сбросить распределение портов. Используйте следующую команду в зависимости от вашей операционной системы:
      • Ubuntu: sudo service docker restart
      • macOS: sudo systemctl restart docker
      • Windows: Restart-Service Docker
  5. Использовать другой порт хоста:

    • Измените порт хоста в команде запуска Docker или файле Docker Compose на другой доступный порт.
  6. Проверьте, не блокируется ли брандмауэр или антивирус:

    • Временно отключите все брандмауэры и антивирусные программы, которые могут блокировать порт.

Не забудьте перезапустить Docker и убедиться, что проблема решена после применения любого из вышеперечисленных методов.