Вопрос или проблема
Я не могу включить привилегированное сопоставление портов в MAC Docker Desktop, я отметил флажок ‘Разрешить привилегированное сопоставление портов (требуется пароль)’ в расширенных настройках. Я использую Mac на базе Intel. Я переустановил Docker-Desktop и перезагрузил ноутбук, но проблема по-прежнему остается.
Ответ с ошибкой от демона: Порты недоступны: открытие порта TCP 127.0.0.1:389 -> 0.0.0.0:0: не удалось подключиться к /var/run/com.docker.vmnetd.sock: работает ли vmnetd?: dial unix /var/run/com.docker.vmnetd.sock: connect: нет такого файла или каталога
Я попробовал проверить, работает ли vmnetd
% ps -ef | grep vmnetd
501 16466 4073 0 11:46PM ttys000 0:00.00 grep vmnetd
Версия Docker Desktop: v4.34.3
% docker --version
Версия Docker 27.2.0, сборка 3ab4256
Ответ или решение
Проблема с привилегированной маршрутизацией портов в Docker Desktop на Mac
Описание проблемы
Вы сообщили о проблемах с включением привилегированной маршрутизации портов в Docker Desktop на Intel-базированном Mac. Несмотря на то что вы отметили флажок «Разрешить привилегированную маршрутизацию портов (требуется пароль)» в разделе настроек, система не позволяет это сделать, сообщая об ошибке при попытке подключиться к порту.
Ошибка
Вы получили следующую ошибку:
Error response from daemon: Ports are not available: exposing port TCP 127.0.0.1:389 -> 0.0.0.0:0: failed to connect to /var/run/com.docker.vmnetd.sock: is vmnetd running?: dial unix /var/run/com.docker.vmnetd.sock: connect: no such file or directory
Из вывода команды ps -ef | grep vmnetd
видно, что процесс vmnetd
не работает, что может быть основной причиной вашей проблемы.
Возможные решения
-
Проверка и перезапуск vmnetd:
- Поскольку процесс
vmnetd
не запущен, вам необходимо перезапустить Docker Desktop. Откройте приложение Docker Desktop и посмотрите на иконку в строке меню. Если оно не запущено, запустите его заново. Это должно автоматически запустить нужные демоны, включаяvmnetd
. - Если проблема сохраняется после перезапуска приложения, попробуйте вручную перезагрузить Docker Desktop. Для этого в меню приложения выберите "Quit Docker Desktop" и затем запустите его снова.
- Поскольку процесс
-
Проверка системных прав:
- Убедитесь, что у вас есть необходимые права для выполнения операций, связанных с привилегированными портами. Если вы запускаете Docker с учетной записи, не обладающей администраторскими правами, это может блокировать доступ к определенным функциями и портам. Попробуйте запустить Docker Desktop от имени администратора.
-
Исключение конфликта с сетевыми настройками:
- Убедитесь, что другие приложения не используют порт, который вы пытаетесь открыть. Например, порт 389 может быть занятыми другими службами. Вы можете проверить занятые порты с помощью команды:
sudo lsof -iTCP -sTCP:LISTEN -P
- Если найдете конфликтующие службы, остановите их или измените настройки запуска Docker на использование другого порта.
- Убедитесь, что другие приложения не используют порт, который вы пытаетесь открыть. Например, порт 389 может быть занятыми другими службами. Вы можете проверить занятые порты с помощью команды:
-
Переустановка Docker Desktop:
- Так как вы уже пробовали переустановку Docker Desktop, убедитесь, что вы удалили все связанные файлы и конфигурации перед новой установкой. Например, удалите все остаточные файлы в
~/Library/Containers/com.docker.docker
и~/Library/Group Containers/group.com.docker/
.
- Так как вы уже пробовали переустановку Docker Desktop, убедитесь, что вы удалили все связанные файлы и конфигурации перед новой установкой. Например, удалите все остаточные файлы в
-
Обновление до последней версии:
- Убедитесь, что вы используете последнюю версию Docker Desktop, поскольку обновления могут содержать исправления ошибок. Проверьте наличие обновлений в настройках Docker Desktop или скачайте последнюю версию с официального сайта Docker.
-
Обращение в поддержку:
- Если ни одно из вышеперечисленных решений не помогло, рассмотрите возможность обращения в официальную поддержку Docker. Предоставьте им все детали проблемы, включая версии программного обеспечения и описание действий, которые вы уже предприняли.
Заключение
Проблемы с разрешением привилегированной маршрутизации портов в Docker Desktop могут быть вызваны несколькими факторами — от отсутствия процесса vmnetd
до конфликтов с другими приложениями или недостаточными правами доступа. Выполнив предложенные шаги, вы сможете устранить текущую проблему и обеспечить функциональность Docker в вашей системе.
Если возникнут дополнительные вопросы, не стесняйтесь задавать их!