Cannot connect to the Docker daemon on macOS
On macOS the docker
binary is only a client and you cannot use it to run the docker daemon, because Docker daemon uses Linux-specific kernel features, therefore you can’t run Docker natively in OS X. So you have to install docker-machine
in order to create VM and attach to it.
Install docker-machine
on macOS
If you don't have docker-machine
command yet, install it by using one of the following methods:
Using Brew command:
brew install docker-machine docker
.Manually from Releases page:
$ 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
See: Get started with Docker for Mac.
Install Virtualbox
docker-machine
relies on VirtualBox being installed and will fail if this isn't the case. If you already have VirtualBox, you can skip this step.
- Using Homebrew:
brew install --cask virtualbox
- Manually using the releases on Virtualbox.org
You will need to actively accept loading the Virtualbox kernel extension in the OS X Security panel and then proceed to restart the machine for the next commands not to fail with Error: VBoxNetAdpCtl: Error while adding new interface
Configure docker-machine
on macOS
Create a default
machine (if you don't have one, see: docker-machine ls
):
docker-machine create --driver virtualbox default
Then set-up the environment for the Docker client:
eval "$(docker-machine env default)"
Then double-check by listing containers:
docker ps
See: Get started with Docker Machine and a local VM.
Related:
- Brew install docker does not include docker engine?
- For Linux, see: Docker can't connect to docker daemon
- For Windows, see: Docker warning: failed to get default registry endpoint from daemon
On a supported Mac, run:
brew install --cask docker
Then launch the Docker app. Click next. It will ask for privileged access. Confirm. A whale icon should appear in the top bar. Click it and wait for "Docker is running" to appear.
You should be able to run docker
commands now:
docker ps
Because docker is a system-level package, you cannot install it using brew install
, and must use --cask
instead.
Note: This solution only works for Macs whose CPUs support virtualization, which may not include old Macs.
Edit 2022 - It was brought up in the comments section that there has been a licensing change for Docker Desktop. Please consider alternatives below, and check the comments for details.
I had this same issue I solved it in the following steps:
docker-machine restart
Quit terminal (or iTerm2, etc, etc) and restart
eval $(docker-machine env default)
I also answered it here