Docker-Compose can't connect to Docker Daemon

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

I am getting an error message saying I can't connect to the docker daemon. I have looked into other people's answers who have had similar issues but it hasn't helped. I am running the version of Ubuntu 15.10. I will try to provide all the info I have.

root@# docker-compose -f docker-compose-deps.yml up -d ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?  If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable. 

Docker Version

root@# sudo docker     version Client: Version:      1.9.1 API version:  1.21 Go version:   go1.4.2 Git commit:   a34a1d5 Built:        Fri Nov 20 13:20:08 UTC 2015 OS/Arch:      linux/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 

Docker-Compose Version

root@# docker-compose --version docker-compose version 1.5.2, build 7240ff3 

This is what happens if I try to stop or start the service...

root@# sudo service docker stop stop: Unknown instance:  root@# sudo service   docker start docker start/running, process 5375 

If I run ps aux | grep docker

root@# ps aux | grep docker root      4233  0.0  0.0  13692  2204 pts/15   S+   10:27   0:00 grep --color=auto docker 

Any help would be greatly appreciated. Let me know if you may need anymore information.

回答1:

I had the same error, after 15 min of debugging. Turns out all it needs is a sudo :) Check out [Create a Docker group] here https://docs.docker.com/engine/installation/linux/ubuntulinux/ to get rid of the sudo prefix.



回答2:

I had the same issue. After taking notes and analyzing some debugging results, finally, I solved what can be the same error. Start the service first,

service docker start

Don't forget to include your user to the docker group.



回答3:

I got this error when there were files in the Dockerfile directory that were not accessible by the current user. docker could thus not upload the full context to the daemon and brought the "Couldn't connect to Docker daemon at http+docker://localunixsocket" message.



回答4:

It appears your issue was created by an old Docker bug, where the socket file was not recreated after Docker crashed. If this is the issue, then renaming the socket file should allow it to be re-created:

$ sudo service docker stop $ sudo mv /var/lib/docker /var/lib/docker.bak $ sudo service docker start 

Since this bug is fixed, most people getting the error Couldn't connect to Docker daemon are probably getting it because they are not in the docker group and don't have permissions to read that file. Running with sudo docker ... will fix that, but isn't a great solution.

Docker can be run as a non-root user (without sudo) that has the proper group permissions. The Linux post-install docs has the details. The short version:

$ sudo groupadd docker $ sudo usermod -aG docker $USER # Log out and log back in again to apply the groups $ groups  # docker should be in the list of groups for your user $ docker run hello-world  # Works without sudo 

This allows users in the docker group to run docker and docker-compose commands without sudo. Docker itself runs a root, allowing some attacks, so you still need to be careful with what containers you run. See Docker Security Documentation for more details.



回答5:

From the output of "ps aux | grep docker", it looks like docker daemon is not running. Try using below methods to see what is wrong and why docker is not starting

  1. Check the docker logs

$ sudo tail -f /var/log/upstart/docker.log

  1. Try starting docker in debug mode

$ sudo docker -d -D



回答6:

I found this and it seemed to fix my issue.

GitHub Fix Docker Daemon Crash

I changed the content of my docker-compose-deps.yml file as seen in the link. Then I ran docker-compose -f docker-compose-deps.yml up -d. Then I changed it back and it worked for some reason. I didn't have to continue the steps in the link I provided, but the first two steps fixed the issue for me.



回答7:

In my case your docker service might be stopped

Command to start docker service:

$ sudo systemctl start docker

Command to verify if it start:

$ sudo docker run hello-world



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!