Can't connect to docker from docker-compose

DockerDocker Compose

Docker Problem Overview


I installed docker-machine 0.1.0 and docker-compose 1.1.0 on Mac OS 10.8.5.
Docker-machine is running normally and able to connect by docker-machine ssh.

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev    *        virtualbox   Running   tcp://192.168.99.100:2376   

However can't connect from docker-compose.

$ docker-compose up

> Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

> If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

My Dockerfile and docker-compose.yml is here.

Dockerfile

FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

docker-compose.yml

web:
  build: .

Why can't connect? Any ideas?

Docker Solutions


Solution 1 - Docker

Simple solution for me: sudo docker-compose up


UPDATE 2016-3-14: At some point in the docker install process (or docker-compose ?) there is a suggestion and example to add your username to the "docker" group. This allows you to avoid needing "sudo" before all docker commands, like so:

~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ > 

Look carefully at the output of the install commands (both docker & the 2nd install for docker-compose) and you'll find the necessary step. It is also documented here: https://subosito.com/posts/docker-tips/

> Sudo? No! > > Tired of typing sudo docker everytime you issue a command? Yeah, there > is a way for dealing with that. Although naturally docker is require a > root user, we can give a root-equivalent group for docker operations. > > You can create a group called docker, then add desired user to that > group. After restarting docker service, the user will no need to type > sudo each time do docker operations. How it looks like on a shell > commands? as a root, here you go:

> sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart 

> Done!

UPDATE 2017-3-9

#Docker installation instructions have been updated here.

#Post-installation steps for Linux

This section contains optional procedures for configuring Linux hosts to work better with Docker.

Manage Docker as a non-root user

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.

If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

To create the docker group and add your user:

# 1. Create the docker group.
$ sudo groupadd docker

# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER

# 3. Log out and log back in so that your group membership is re-evaluated.

# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

This command downloads a test image and runs it in a container. When the container runs, it prints an informational message and exits.

Solution 2 - Docker

The Docker machine is running. But you need to export some environment to connect to the Docker machine. By default, the docker CLI client is trying to communicate to the daemon using http+unix://var/run/docker.sock (as shown in the error message).

Export the correct environment variables using eval $(docker-machine env dev) and then try again. You can also just run docker-machine env dev to see the environment variables it will export. Notice that one of them is DOCKER_HOST, just as the error message suggests you may need to set.

Solution 3 - Docker

If you started docker using sudo , then you should run docker-compose up with sudo Like: sudo docker-compose up

Solution 4 - Docker

I solved the issue in Ubuntu 20.0.4 by

sudo chmod 666 /var/run/docker.sock

and then

sudo service docker start && docker-compose up -d

Ref.

Solution 5 - Docker

When you get an Error:

> ERROR: Couldn't connect to Docker daemon at http+docker://localhost - > is it running?

The Solution would be:

  1. First, try verifying Docker Service is Up and Running as expected on your remote/local machine:sudo service docker status

    if Not - run sudo service docker start or sudo systemctl start docker (depends on some linux versions, see Docker get started instructions).

  2. Second, start docker as sudo sudo docker-compose up

Solution 6 - Docker

By default the docker daemon always runs as the root user, therefore you need to prepend sudo to your Docker command(s).

If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

To create the docker group and add your user:
  1. Create the docker group.

$ sudo groupadd docker

  1. Add your user to the docker group.

$ sudo usermod -aG docker $USER

  1. Log out and log back in so that your group membership is re-evaluated.

  2. Verify that you can docker commands without sudo.

$ docker run hello-world

This command downloads a test image and runs it in a container. When the container runs, it prints an informational message and exits.

The steps outlined above comes from the official Docker documentation.

Solution 7 - Docker

sudo systemctl start docker

  • to start the Docker service.

sudo docker-compose up after that.

I have Fedora 26, and trying to solve the same issue I eventually entered [Docker Compose on Fedora Developers' page][1] and then [Docker on Fedora Developers' page][2], which helped me.

Probably, docker service considered by community to start with the system and run in background all the time, but for me it was not so obvious, and that's the reason I can think of why there's no popular answer like this one.

On the [Fedora Developers' page][2] there's instruction how to enable Docker to start with the system:

sudo systemctl enable docker

[1]: https://developer.fedoraproject.org/tools/docker/compose.html "Docker Compose on Fedora page" [2]: https://developer.fedoraproject.org/tools/docker/docker-installation.html "Docker on Fedora Developers' page"

Solution 8 - Docker

a quick way to solve this

> Just add sudo before your docker command, like


sudo docker-compose up

Solution 9 - Docker

Run this as a root. sudo docker-compose up --build

Solution 10 - Docker

If you are on Linux you may not have docker-machine installed since it is only installed by default on Windows and Mac computers.

If so you will need to got to: https://docs.docker.com/machine/install-machine/ to find instructions for how to install it on your version of Linux.

After installing, retry running docker-compose up before trying anything listed above.

Hope this helps someone. This worked for my devilbox installation in Fedora 25.

Solution 11 - Docker

if you are using linux

try sudo docker-compose up

Solution 12 - Docker

I know it's silly, but in my case I just tried with sudo and it worked like a charm.

in your case, just try: $ sudo docker-compose up

Solution 13 - Docker

Anyone checked log ?

In my case error message in /var/log/upstart/docker.log was:

Listening for HTTP on unix (/var/run/docker.sock) 
[graphdriver] using prior storage driver "aufs" 
Running modprobe bridge nf_nat failed with message: , error: exit status 1 
Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0" 

Worth to mentioned I had vpn turned on, so: $ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start was the solution.

Solution 14 - Docker

if you are using docker-machine then you have to activate the environment using env variable. incase you are not using docker-machine then run your commands with sudo

Solution 15 - Docker

Apart from adding users to docker group, to avoid typing sudo repetitively, you can also create an alias for docker commands like so:

alias docker-compose="sudo docker-compose"
alias docker="sudo docker"

Solution 16 - Docker

There might be privilege issues, Following command work out for me.

sudo chown $USER /var/run/docker.sock

Thanks to Max for solution: https://stackoverflow.com/posts/60282354/revisions

Solution 17 - Docker

Answer from @srfrnk works for me.

In my situation, I had the next docker-compose.yml file:

  nginx:
    build:
      context: ./
      dockerfile: "./docker/nginx.staging/Dockerfile"
    depends_on:
      - scripts
    environment:
      NGINX_SERVER_NAME: "some.host"
      NGINX_STATIC_CONTENT_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: scripts
      NGINX_SERVER_ROOT: /var/www/html
    volumes:
      - ./docker-runtime/drupal/files:/var/www/html/sites/default/files:rw
    ports:
      - 80:80

./docker-runtime owner and group - is root when the other files owner - my user. When I tried to build nginx

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

I added ./docker-runtime to .dockerignore and it is solved my problem.

Solution 18 - Docker

while running docker-compose pull - i was getting below error

> ERROR: Couldn't connect to Docker daemon at http+docker://localhost

is it running?

solution -

sudo service docker start 

issue resolved

Solution 19 - Docker

1 . sudo service docker stop 
2 . sudo service docker status
3 . sudo service docker start
4 . docker-compose build <app_name\service_name>

Solution 20 - Docker

I've had the same symptoms.

Only diff that it happened only during docker-compose build docker ps worked. Happened with version 2.x as well as 3.x. Restarted docker service, then the machine... Even re-installed docker + docker-compose.

Tried everything but nothing helped.

Finally I tried building the Dockerfile "manually" by using docker build.

Apparently I had a permission issue on a file/folder inside the Docker context. It was trying to read the context when starting the build and failed with a proper error message. However this error message did not propagate to docker-compose which only shows Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

Having found that the solution was simply adding the file/folder to the .dockerignore file since it wasn't needed for the build. Another solution might have been to chown or chmod it.

Anyway maybe this could help someone coming across the same issue that really has nothing to do with docker and the misleading error message being displayed.

Solution 21 - Docker

$sudo docker-compose up

I did follow the steps as it is in the above answer to add $USER to group docker. i didn't want to add a new group docker because in my docker installation a group named docker automatically created.

Docker CE is installed and running. The docker group is created but no users are added to it. You need to use sudo to run Docker commands. Continue to Linux postinstall to allow non-privileged users to run Docker commands and for other optional configuration steps.

but using docker-compose up didn't work either. It gave the same previous error. So in my case(Ubuntu 18.10) sudo docker-compose up fixed the issue.

ps: @Tiw thanks for the advice.

Solution 22 - Docker

try this:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Solution 23 - Docker

I have resolved the issue using following steps

$ sudo service docker status
$ sudo service docker start
$ sudo docker-compose up

now docker-compose up is working

Solution 24 - Docker

logging out then in again helped me. In my case it was fresh install, I created a new user, new group then added the user to the docker group.

exit exit

then ssh into the server again

Solution 25 - Docker

WORKING!!
I tried with below commands and its working

service docker restart
docker-compose -f docker_compose.yaml down
docker-compose -f docker_compose.yaml up

Solution 26 - Docker

For me, I started upgrading Docker and cancelled midway. I didn't notice that Docker was not running (if it was, there is an icon at the top nav bar of my Macbook, by the battery remaining, time, etc). Once I launched it, and finished the upgrade, docker-compose up worked again!

Solution 27 - Docker

My setup has got two cases for this error:

  • __pycache__ files created by root user after I run integration tests inside container are inaccessible for docker (tells you original problem) and docker-compose (tells you about docker host ambiguously);
  • microk8s blocked my port until I stopped it.

Solution 28 - Docker

Try running dockerd or sudo dockerd if required first to start daemon. If you start dockerd with sudo you may want to run docker-compose up with sudo also. otherwise it's fine.

Working solution from https://github.com/docker/compose/issues/4181

Solution 29 - Docker

The following worked for me, I'm not sure what part did the trick:

julian:project$ sudo service docker status
julian:varys$ sudo service docker status                                                                                                                                                                                
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-15 01:21:16 UTC; 24min ago
     Docs: https://docs.docker.com
 Main PID: 6762 (dockerd)
    Tasks: 25
   CGroup: /system.slice/docker.service
           └─6762 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

julian:project$ export DOCKER_HOST=unix:///run/containerd/containerd.sock

julian:project$ sudo groupadd docker
groupadd: group 'docker' already exists
julian:project$ sudo gpasswd -a $USER docker
Adding user ubuntu to group docker
julian:project$ newgrp docker

julian:project$ ls -ln /var/run/ | grep docker
drwx------  5   0   0  120 Jul 15 01:10 docker
-rw-r--r--  1   0   0    4 Jul 15 01:10 docker.pid
srw-rw----  1   0 999    0 Jul 15 01:10 docker.sock

julian:project$ sudo rm /var/run/docker.sock                                                                                                                                                                                            
julian:project$ sudo rm /var/run/docker.pid

julian:project$ sudo service docker restart  

Solution 30 - Docker

Try restarting your docker environment using:

systemctl restart docker

Solution 31 - Docker

A Solution that worked with me was to change the image tag to lowercase letters.

change the image tag in docker-compose.yml file to include repository IP and image name in lowercase letters.

e.g : image: 192.168.1.5/imagename:v1

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDIGITALSQUADView Question on Stackoverflow
Solution 1 - DockerAlan ThompsonView Answer on Stackoverflow
Solution 2 - DockerAndy ShinnView Answer on Stackoverflow
Solution 3 - DockerRohan SethView Answer on Stackoverflow
Solution 4 - DockerMohammad HeydariView Answer on Stackoverflow
Solution 5 - DockeravivamgView Answer on Stackoverflow
Solution 6 - DockerndequekerView Answer on Stackoverflow
Solution 7 - DockerAleksei AlefirovView Answer on Stackoverflow
Solution 8 - Dockerhamidreza nikooniaView Answer on Stackoverflow
Solution 9 - DockerS.KiharaView Answer on Stackoverflow
Solution 10 - Dockerspecialk1stView Answer on Stackoverflow
Solution 11 - DockerJoshua GalitView Answer on Stackoverflow
Solution 12 - DockerDemobilizerView Answer on Stackoverflow
Solution 13 - DockerSławomir LenartView Answer on Stackoverflow
Solution 14 - DockerMd ChView Answer on Stackoverflow
Solution 15 - DockerShanu GuptaView Answer on Stackoverflow
Solution 16 - Dockerchirag sanghviView Answer on Stackoverflow
Solution 17 - DockerDima StorozhukView Answer on Stackoverflow
Solution 18 - DockerkumarView Answer on Stackoverflow
Solution 19 - Dockeruser14860341View Answer on Stackoverflow
Solution 20 - DockersrfrnkView Answer on Stackoverflow
Solution 21 - DockerNayananga MuhandiramView Answer on Stackoverflow
Solution 22 - DockerTBhavnaniView Answer on Stackoverflow
Solution 23 - DockerKARTHIKEYAN.AView Answer on Stackoverflow
Solution 24 - DockerSwelan AugusteView Answer on Stackoverflow
Solution 25 - DockerNids BarthwalView Answer on Stackoverflow
Solution 26 - DockerRock LeeView Answer on Stackoverflow
Solution 27 - DockersimnoView Answer on Stackoverflow
Solution 28 - DockerGathua KiraguView Answer on Stackoverflow
Solution 29 - DockerjuliangonzalezView Answer on Stackoverflow
Solution 30 - DockerLagrangeView Answer on Stackoverflow
Solution 31 - DockerAmr Khaled NowahyView Answer on Stackoverflow