Не удается подключиться к демону Docker на macOS
Обычно я предпочитаю управлять своими приложениями на своем OSX с помощью brew
Я могу установить docker, docker-compose и docker-machine
docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455
Я не загружал и не запускал приложение "Docker for Mac".
Однако, когда я пытаюсь запустить
> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Я уже проверил файл sock
ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory
Я также пробовал это предлагаемое решение: Mac OS X sudo docker Не удается подключиться к демону Docker. Домен docker работает на этом хосте?
Но я получил это сообщение об ошибке:
$ eval $(docker-machine env default)
Host does not exist: "default"
Возможно ли получить службу докеров для запуска с помощью средств командной строки?
Ответы
Ответ 1
На поддерживаемом Mac запустите:
brew cask install docker
Затем запустите приложение Docker. Нажмите кнопку "Далее. Это попросит привилегированный доступ. Подтвердить. Значок кита должен появиться в верхней панели. Нажмите на нее и подождите, пока появится "Docker is running".
Теперь вы сможете запускать команды docker
:
docker ps
Поскольку docker является пакетом системного уровня, вы не можете установить его с помощью brew install
, а вместо этого должны использовать cask.
Примечание. Это решение работает только для компьютеров Mac, процессоры которых поддерживают виртуализацию, которые могут не включать старые компьютеры Mac.
Ответ 2
В macOS бинарный файл docker
является только клиентом, и вы не можете использовать его для запуска демона docker, потому что демон Docker использует специфичные для Linux функции ядра, поэтому вы не можете запустить Docker в OS X. необходимо установить docker-machine
, чтобы создать виртуальную машину и подключиться к ней.
Установите docker-machine
на macOS
Если у вас еще нет команды docker-machine
, установите ее одним из следующих способов:
- С помощью команды Brew:
brew install docker-machine docker
.
Вручную со страницы релизов:
$ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-'uname -s'-'uname -m' >/usr/local/bin/docker-machine
$ chmod +x /usr/local/bin/docker-machine
См.: Начало работы с Docker для Mac.
Установить Virtualbox
docker-machine
зависит от установленного VirtualBox и завершится ошибкой, если это не так. Если у вас уже есть VirtualBox, вы можете пропустить этот шаг.
- Использование Homebrew:
brew cask install virtualbox
- Вручную используя релизы на Virtualbox.org
Вам нужно будет активно принять загрузку расширения ядра Virtualbox на панели безопасности OS X, а затем перейти к перезагрузке компьютера, чтобы следующие команды не завершились с Error: VBoxNetAdpCtl: Error while adding new interface
Сконфигурируйте docker-machine
в macOS
Создайте машину default
(если у вас ее нет, см.: docker-machine ls
):
docker-machine create --driver virtualbox default
Затем настройте среду для клиента Docker:
eval "$(docker-machine env default)"
Затем перепроверьте, перечислив контейнеры:
docker ps
См.: Начало работы с Docker Machine и локальной виртуальной машиной.
Связанный:
Ответ 3
У меня была такая же проблема, как я решил это в следующих шагах:
docker-machine restart
Закройте терминал (или iTerm2 и т.д. И т.д.) И перезапустите
eval $(docker-machine env default)
Я также ответил на это здесь
Ответ 4
Попробуйте создать по умолчанию.
docker-machine create default
Ответ 5
в OSX убедитесь, что вы запустили приложение Docker перед выдачей
docker ps
или docker build
... и т.д... да, это кажется странным и несколько вводящим в заблуждение, что выдача
docker --version
выдает версию, даже если демон docker не запущен... то же самое для других версий cmds... я только что столкнулся с точно такими же симптомами... это поведение в OSX отличается от поведения в linux
Ответ 6
У меня Mac OS, и я открываю Launchpad
и выбираю приложение docker
. из вкладки reset
нажмите на restart
.
Ответ 7
У меня был докер на сегодняшний день, докер сказал, что он работает, и диагноз был хорошим. Мне нужно было отключить некоторую устаревшую переменную среды (спасибо https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems)
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
Ответ 8
У меня была та же проблема. Докер работает, но не смог получить к нему доступ через CLI.
Для меня проблема была решена путем выполнения "Docker Quickstart Terminal.app". Он находится в папке "/Applications/Docker/". Пока я работаю в этом примере приложения Terminal, Docker работает отлично. Если требуется второе окно, мне нужно снова запустить приложение "Быстрый старт".
У меня есть установка Docker для Mac. Поэтому я не уверен, что мое решение действительно для установки Homebrew.
"Приложение Docker Quickstart Terminal", по-видимому, по сути является некоторыми приложениями для запуска терминального приложения и bash start script, которые инициализируют все необходимые переменные среды.
Надеюсь, это поможет кому-то еще!
Ответ 9
Поскольку управление процессами по своей сути затруднено с MacOS (в отличие от традиционной операционной системы * nix с такими вещами, как SystemD и init), вам нужно запустить приложение для запуска и запустить в фоновом режиме, чтобы позволить демону работать (и иметь простой доступ к управлению).
brew install
просто устанавливает утилиты CLI. brew cask install
предназначена для утилит GUI. Таким образом, при установке докеры вы должны предварительно создать BOTH-установки, чтобы получить утилиту GUI daemon и утилиту CLI. Надеюсь, это объяснит тот, кто был расстроен тем, что Brew не установил оба по умолчанию!
Ответ 10
Установите миникуб и присоединяйтесь к темной стороне.
https://kubernetes.io/docs/tasks/tools/install-minikube/
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
eval $(minikube docker-env)
$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/swagger.json -l python -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.
Отлично работает на Macbook Pro 2018 с bash v5. Не нужно устанавливать всю другую чушь докера в наши дни ИМО. Исходя из моего опыта, виртуальная машина и скрипт установки, поставляемый с мини-кубом, могут заменить докер.
Ответ 11
Лучшее решение - установить и начать использовать Docker for Mac
.
Ответ 12
Сначала я попробовал докер и докер с помощью доморощенного, но в нем была проблема, перечисленная здесь. Мне пришлось установить официальную установку docker с https://docs.docker.com/docker-for-mac/install/, и тогда все работало должным образом.
Ответ 13
мне просто нужно было запустить поиск в центре внимания и запустить приложение Docker в папке /Applications, в которой была создана brew cask install
. Как только это было выполнено, его попросили завершить установку. Я тогда смог запустить docker ps
Ответ 14
Я столкнулся с подобной проблемой на моем Mac, и я обнаружил, что на моей машине не работает докер, я просто зашел в приложения и вызвал кита, а затем все заработало.