Не удается подключиться к демону Docker в macOS

208

Я обычно предпочитаю управлять своими приложениями на 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

Я не загружал и не запускал приложение «Докер для 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'.

Я уже проверил файл носка

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"

Можно ли заставить Docker-сервис работать с помощью инструментов командной строки?

Энтони Конг
источник
2
Запустите приложение Docker из панели запуска, появится диалоговое окно с запросом о том, что для запуска приложения необходимо предоставить некоторые привилегированные права для этого приложения, после чего Docker вернется в игру.
Рафаэль Керр
В моем случае был другой пользователь, вошедший в систему, поэтому он не работал. Выйдите из системы другого пользователя и
Раза Ахмед

Ответы:

474

На поддерживаемом Mac запустите:

brew cask install docker

Затем запустите приложение Docker . Нажмите кнопку "Далее. Это попросит привилегированный доступ. Confirm. Значок кита должен появиться в верхней панели. Нажмите на нее и дождитесь появления «Docker is running».

dockerТеперь вы сможете запускать команды:

docker ps

Поскольку docker является пакетом системного уровня, вы не можете установить его с помощью brew install, а вместо этого должны использовать бочку.

Примечание. Это решение работает только для компьютеров Mac, процессоры которых поддерживают виртуализацию, которые могут не включать старые компьютеры Mac.

friederbluemle
источник
10
Это должен быть принятый ответ. Перейдите на панель запуска после установки и
Джо Ллойд,
39
Я запустил Docker для установки brew, и приложение не было установлено до тех пор, пока не запустил команду Docker для установки brew cask. Спасибо!
Jbrahy
2
Что произойдет, если команда по-прежнему не работает даже после установки бочки (а кит Docker показывает, что она работает после ввода пароля)?
vol7ron
2
Это решение работает только для компьютеров Mac, процессоры которых поддерживают виртуализацию. Например, он не работает на Mac Pro 2009 года. Не могли бы вы отредактировать свой ответ, чтобы включить этот важный факт?
Джон Y
3
Это помогло мне, как я использовал brew install dockerвначале. brew installиметь дело со службами CLI и brew cask installявляется расширением, которое помогает работать со службами с графическим интерфейсом пользователя.
Биной ​​С Кумар
109

В 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 и локальной виртуальной машиной .


Связанный:

kenorb
источник
7
это должен быть принятый ответ. В нем четко изложены: а) почему он не работает, б) инструкции по его запуску без загрузки пользовательского интерфейса на OSX и в) справочные ссылки для дальнейшего чтения.
user2490003
1
Я также должен был установить virtualbox, чтобы заставить команды docker-machine работать:brew cask install virtualbox
oligofren
1
Чтобы начать docker-machineвход в систему, используйте brew services start docker-machineили, если вы не хотите использовать Homebrew, см. Раздел «Запуск локальных компьютеров при запуске» на этой странице (содержит инструкции для Mac).
Крис Х.
Как здесь поможет установка докера с "brew cask install docker"? Позволит ли он запускать поток демонов Docker для запуска на Mac? Как это решит ошибку «docker: невозможно подключиться к демону Docker в unix: ///var/run/docker.sock»?
Gunjan Shah
40

У меня была такая же проблема, я решил ее в следующие шаги:

docker-machine restart

Выйдите из терминала (или iTerm2, и т. Д., И т. Д.) И перезапустите

eval $(docker-machine env default)

Я также ответил здесь

Мастер р
источник
2
Eval "должен" быть всем, что вам нужно :)
rogerdpack
15

У меня Mac OS, и я открываю Launchpadи выбираю dockerприложение. из resetвкладки нажмите на restart.

Эхсан Бархордар
источник
Да, вы должны запустить приложение Docker, ха-ха
Ender
12

Попробуйте сделать это по умолчанию.

docker-machine create default
Моссаддек Махмуд
источник
5
это просто дало мне ... docker-machine создать по умолчанию Создание CA: /Users/stens/.docker/machine/certs/ca.pem Создание сертификата клиента: /Users/stens/.docker/machine/certs/cert.pem Запуск проверки перед созданием ... Ошибка проверки перед созданием: "VBoxManage не найден. Убедитесь, что VirtualBox установлен, а VBoxManage находится в пути" .... что кажется неправильным, поскольку VirtualBox больше не требуется для запуска docker на osx
Скотт
Похоже, вы также можете использовать xhyve, см. Stackoverflow.com/a/42419979/32453 или просто установить virtualbox :)
rogerdpack
И что ?
FrankyFred
7

на OSX убедитесь, что вы запустили приложение Docker перед выдачей

docker ps

или docker build... и т.д ... да это кажется странным и несколько вводящим в заблуждение, что выдача

docker --version

выдает версию, даже если демон docker не работает ... то же самое для других версий cmds ... я только что столкнулся с точно такими же симптомами ... это поведение в OSX отличается от Linux

Скотт Стенсленд
источник
3

У меня такая же проблема. Докер работает, но не может получить к нему доступ через CLI.

Для меня проблема была решена с помощью «Docker Quickstart Terminal.app». Он находится в папке «/ Applications / Docker /». Пока я работаю в этом приложении терминала, Docker работает отлично. Если требуется второе окно, мне нужно еще раз запустить приложение «Быстрый старт».

У меня есть установка Docker для Mac. Поэтому я не уверен, подходит ли мое решение для установки Homebrew.

Приложение «Docker Quickstart Terminal», по-видимому, представляет собой несколько сценариев, запускающих приложение терминала, и сценарий запуска bash, который инициализирует все необходимые переменные среды.

Надеюсь, это поможет кому-то еще!

BeO
источник
3

У меня был докер в курсе, докер сказал, что он работает, и диагноз был хорошим. Мне нужно было удалить некоторую переменную среды (спасибо https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
Майкл
источник
1
это исправило мою проблему после обновления с докера на основе виртуальной машины до установщика Mac. Он продолжал искать ВМ.
бобоморено
используйте это, если вы видите неправильный IP-адрес в «Не
удается
2

Docker для Mac устарел. И вам не нужен Homebrew для запуска Docker на Mac. Вместо этого вы, вероятно, захотите установить Docker Desktop или, если он уже установлен, убедиться, что он обновлен и работает, а затем попытаться снова подключиться к сокету.

введите описание изображения здесь

Джош Хабдас
источник
2

Вы должны выполнить скрипт для установки Docker и запустить его из командной строки:

brew cask install docker
pip3 install docker-compose
open -a Docker
docker-compose ... 

после этого docker-composeдолжно работать

Борис Азанов
источник
работал для меня, спасибо
Soul Coder
1

Установите миникуб и присоединяйтесь к темной стороне.

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. Не нужно устанавливать всю другую чушь докера в наши дни ИМО. Исходя из моего опыта, виртуальная машина и скрипт установки, поставляемый с мини-кубом, могут заменить докер.

Ligemer
источник
В качестве последующего комментария мне понадобился также докер для другого проекта без Kube, и рабочий стол докера прекрасно работает. Только не запускайте его всегда, иначе kube рассердится из-за этого поста.
Ligemer
1

Я столкнулся с подобной проблемой на моем Mac, и я обнаружил, что докер не работает на моей машине, я просто пошел в приложения и вызвал кита, а затем он работал.

Рама Шарма
источник
0

Сначала я попробовал docker и docker-compose с помощью homebrew, но проблема здесь была указана. Мне пришлось установить официальную установку докера с https://docs.docker.com/docker-for-mac/install/, и тогда все работало как положено.

Томас Кесслер
источник
0

Мне просто нужно было запустить поиск Spotlight и запустить приложение Docker в папке / Applications, которая была brew cask installсоздана. Как только это было выполнено, его попросили завершить установку. Я тогда смог бежатьdocker ps

wired00
источник