16
votes

I installed docker and there seems to be some issue.

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

$sudo docker ps

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

What should I do?

7
would be nice if you also tell us the version of docker that you are using right now (or how you installed)Jeffrey04
Possible duplicate of Docker can't connect to docker daemonkenorb
When you use sudo by default it doesn't copy the environment in, which environment you apparently need for OS X...rogerdpack

7 Answers

33
votes

You need to set up your shell to use Docker: eval $(docker-machine env default) Where does this command come from? Run docker-machine env default and you'll see something like the following:

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/eric/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell: 
# eval $(docker-machine env default)

Also you may or may not have to simply start the Docker host beforehand via: docker-machine start default

6
votes

docker-machine is a legacy stuff for OSX that operates with VirtualBox. What you should do is get rid of it completely, and then you should download the latest version of docker, that is called Docker for Mac

Make sure, you remove the legacy docker, and the docker-machine from your Mac before installing Docker for Mac. If you do not do that, the legacy docker binary will be favoured after the installation, and you will still get the error message, which says that cannot connect to the Docker daemon.

6
votes

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)
3
votes

I just had this problem. I was using the old docker-machine and I switched to the latest docker for mac. Running eval $(docker-machine env default) sets up some environment variables.

To solve my problem, I unset those environment variables...

unset DOCKER_HOST DOCKER_MACHINE_NAME DOCKER_TLS_VERIFY DOCKER_CERT_PATH

0
votes

if you are using docker toolbox, type this before running the docker ps command to set the environment

docker-machine env default
0
votes

to have it persistent on new terminals & reboot put it to the bash_profile file

echo "eval \$(docker-machine env default)" >> ~/.bash_profile
0
votes

remove the export DOCKER_HOST.... from your environment (.bashrc, .bash_profile what have you), restart shell/terminal, worked for me.