213

I want to install this module but there is something wrong when I try the step docker-compose build ...

I tried to update the Docker version and restart Docker many times. But it didn't work.

git clone https://github.com/uhh-lt/158.git
cd 158
docker-compose build
File "/home/ming/.local/bin/docker-compose", line 8, in <module>
    sys.exit(main())
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/main.py", line 67, in main
    command()
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/main.py", line 123, in perform_command
    project = project_from_options('.', options)
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/command.py", line 60, in project_from_options
    return get_project(
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/command.py", line 131, in get_project
    client = get_client(
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 41, in get_client
    client = docker_client(
  File "/home/ming/.local/lib/python3.8/site-packages/compose/cli/docker_client.py", line 170, in docker_client
    client = APIClient(**kwargs)
  File "/home/ming/.local/lib/python3.8/site-packages/docker/api/client.py", line 188, in __init__
    self._version = self._retrieve_server_version()
  File "/home/ming/.local/lib/python3.8/site-packages/docker/api/client.py", line 212, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

Update 2020-11-23

Thanks for two of you helping me with the error! I tried the commend but can't connect to my Docker:

ming@KITM-7664:~$ sudo /etc/init.d/docker start
[sudo] password for ming:
 * Starting Docker: docker                                                                                       [ OK ]

ming@KITM-7664:~$ which docker
/usr/bin/docker

ming@KITM-7664:~$ docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:52 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

ming@KITM-7664:~$ systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

ming@KITM-7664:~$ systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

ming@KITM-7664:~$ sudo /etc/init.d/docker start
 * Starting Docker: docker                                                                                       [ OK ]

ming@KITM-7664:~$ docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:52 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Benjamin Loison
  • 3,782
  • 4
  • 16
  • 33
ming
  • 2,131
  • 2
  • 4
  • 4
  • 68
    make sure that docker desktop is up running. In my case I got docker.errors.DockerException: Error while fetching server API version: (2, 'CreateFile', 'The system cannot find the file specified.') because I manually stopped docker desktop. Once I restarted it, everthing worked as expected. – Yogesh Jog Feb 01 '21 at 20:42
  • 1
    In addition to What @YJDev said, I installed docker-desktop, which I guess takes over starting the docker service. So once I started up docker-desktop, docker-compose ran like a charm! – Dash2TheDot May 11 '22 at 16:44

21 Answers21

353

Are you sure docker is running on your system? You can get that error when compose is not able to connect to docker via docker socket (if any other way for connection is not defined).

If you are running on linux, usually you can run systemctl status docker to check if docker daemon is running and systemctl start docker to start it.

It would help to tell what OS and docker version are you using.

Daniel N.
  • 3,642
  • 1
  • 7
  • 10
  • Thank you for the help!! I'm using ubuntu and the docker version is 19.03.13. I tried to use 'systemctl start docker' to start but there is something wrong so I tried 'sudo /etc/init.d/docker start'. Didn't work either... – ming Nov 23 '20 at 06:50
  • 3
    I understand. It sounds a bit like WSL... please try "sudo service docker start" and see if it's working. This is in case it's WSL, have you tried to start it as administrator (by right clicking from start menu)? – Daniel N. Nov 23 '20 at 08:35
  • 1
    "sudo service docker start" didn't work so I opened the windows powershell(administrator), run "docker-compose build " and the other error happened'/usr/bin/env: ‘python3\r’: No such file or directory ERROR: Service 'frontend' failed to build : The command '/bin/sh -c ./frontend_assets.py' returned a non-zero code: 127' – ming Nov 23 '20 at 10:29
  • It seems like I have to install dos2unix in ubuntu...so I backed to ubuntu, tried to install powershell into ubuntu...after installed powershell and dos2unix, run 'docker version' still cannot connect..error:'Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?' – ming Nov 23 '20 at 10:34
  • 1
    Yes, until docker daemon does not start (the "sudo service docker start" supposed to do that), the socket file doesn't exists and docker and compose cannot connect to the daemon. First thing you should do is find out why docker daemon doesn't start. Please try and follow the informations here (including trying to run dockerd manually and also see the troubleshooting guide on the same page): https://docs.docker.com/config/daemon/ – Daniel N. Nov 23 '20 at 11:12
  • Wonder why isn't this upvoted more? Should be a common error and this was the spot-on answer. – JackLeEmmerdeur Dec 20 '20 at 22:31
  • Saw this error. Panicked. Saw this response. Calm. – n8jadams Jun 23 '21 at 13:17
  • My issue was that the docker wasn't initiated. Then, I restarted the computer, relaunched docker and everything worked fine. – Elias Prado Aug 11 '21 at 13:52
  • Thank you for the solution. I was trying docker commands without starting docker. – SAIF AHMED ANIK Oct 17 '21 at 15:28
  • I know this is an old thread but, in the new Docker update (Windows), Docker won't work in the first run without WSL 2, so just be patient and follow Docker's provided instructions... – Huy Phạm Aug 19 '22 at 10:20
119

set the permission like this,

sudo chmod 666 /var/run/docker.sock
Mafei
  • 3,063
  • 2
  • 15
  • 37
  • worked for me! I originally checked "systemctl status docker" to see if docker was running—it was. I move onto this answer and it worked great. thanks! – Leviathan_the_Great Oct 05 '21 at 17:45
  • 5
    Be careful! Anyone who can access the Docker socket can pretty trivially root the host. This setting can make sense on a developer system where you give yourself unrestricted `sudo` access anyways, but it may not be good security practice in other contexts. – David Maze Nov 16 '21 at 11:51
  • 1
    Could you explain why this works? – Daniel Walker Jun 29 '22 at 14:41
  • 5
    Bad suggestion, downvoted. The socket file will have a group – usually `docker`. You should add yourself to that group (add your username to the group in `/etc/group`, log out, log in again) if you want to have access to the socket. Opening it up to *all* users of the machine like this is bad practice, for reasons that @DavidMaze already pointed out. – Frans Sep 27 '22 at 07:30
  • 1
    @DanielWalker it works because it gives all users access to the "socket" file – the three digits in the `chmod` command stand for user permissions, group permissions, world permissions and all three are set to 6 which means "read and write". The socket file is a channel for communicating with the Docker process, similar to a network port. Without access to this socket, you can't communicate with the Docker process (daemon). However, giving access to a particular user (you) by giving access to everyone is like removing a door entirely instead of giving someone a key to unlock the door. – Frans Sep 27 '22 at 08:19
  • This is a safer first try https://stackoverflow.com/a/68968809/363217 – Purefan Apr 11 '23 at 08:54
39

When you are using WSL (Windows Subsystem for Linux), you need to enable 'WSL Integration' for the required distro in Windows Docker Desktop (Settings -> Resources-> WSL Integration -> Enable integration with required distros).

WSL Integration

Community
  • 1
  • 1
vladimir
  • 13,428
  • 2
  • 44
  • 70
28

By default, the docker command can only be run the root user or by a user in the docker group, which is automatically created during Docker’s installation process. If you want to avoid typing sudo whenever you run the docker command, add your username to the docker group:

sudo usermod -aG docker ${USER}

To apply the new group membership, log out of the server and back in, or type the following:

su - ${USER}

You will be prompted to enter your user’s password to continue.

Victor Lee
  • 2,467
  • 3
  • 19
  • 37
Isaque Bezerra
  • 391
  • 3
  • 3
  • 5
    This solution actually helped me and seems to be more safe that setting 666 permisions on docker.sock – Michał Mar 24 '22 at 19:05
  • Didn't work for me, but this worked: https://stackoverflow.com/questions/64662372/docker-compose-up-error-while-fetching-server-api-version-connection-aborte – Daniel Mar 17 '23 at 01:39
17

sudo service docker start or
sudo service docker restart

acrosman
  • 12,814
  • 10
  • 39
  • 55
Cristian marín
  • 319
  • 2
  • 3
9

Just had the same issue after updating Windows Docker desktop to it's latest version (20.10.2, build 2291f61). It happened that this update disabled the WSL2 integration with my virtual Ubuntu 18.04, which I use to run most projects.

I solved it this way:

  1. Open Docker Desktop
  2. Go to Settings > Resources > WSL Integration
  3. Make sure that your distribution is enabled
  4. Restart Docker
  5. Without the need of restarting WSL2, docker should work again

Docker Desktop distro integration

Erwol
  • 1,911
  • 2
  • 23
  • 28
6

I had a similar issue and it turned out to be due to Docker server not running. I started the app and then ran docker-compose up and it started working fine. Hope it helps anyone who's caught in a similar situation. :-)

mansoor.khan
  • 2,309
  • 26
  • 39
6

You don't have permission to use the docker socket, by default only the docker group can access it. You can verify this with ls -l /var/run/docker.sock, which will print something like:

srw-rw----. 1 root docker 0 Oct  4 18:04 /var/run/docker.sock

To be able to access the socket and use Docker, add yourself to the Docker group with the following command:

sudo usermod -a -G docker $(whoami)

Then logout and back in. Docker will now work.

Xenxier
  • 431
  • 4
  • 7
5

Make sure you check the box for 'use Docker Compose V2'. It solved for me. docker desktop

Balraj
  • 51
  • 1
  • 2
3

If you're using docker-compose inside podman try the below command to resolve this issue "docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))"

systemctl start podman.socket
eatsfood
  • 950
  • 2
  • 21
  • 31
2

I'm also get this error when i try to run the docker-compose and docker desktop is turn off, i think that is bug in docker-compose that not notify the user it that the problem is becuse the docker service is down, same as the docker cli that throw correct error:

C:\Users\x\IdeaProjects\mongo-exmple>docker pull node
Using default tag: latest
error during connect: This error may indicate that the docker daemon is not running.: Post "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/create?fromImage=node&tag=latest": open //./pipe/docker_engine: The system cannot find 
the file specified.
Yaakov Klein
  • 131
  • 1
  • 5
2

At Linux (at least Ubuntu 18.04.x), you sometimes need to log out and re-login your X user session. Logging out of bash or out of the terminal window and re-logging in is not enough, see for example https://askubuntu.com/questions/1161020/groups-and-groups-user-show-different-groups-dialout-is-missing

Eugene Gr. Philippov
  • 1,908
  • 2
  • 23
  • 18
2

In Mac OS and Windows sometimes that's enough to start up docker application and this error is because of loss of docker daemon in system.

Javad
  • 2,033
  • 3
  • 13
  • 23
2

My issue was I was not signed into docker desktop.

Chris R
  • 29
  • 2
2

I had this error running docker compose in Linux Subsystem on Win10, the problem was that I have forgotten to start Docker Desktop application

Andrey Mazur
  • 510
  • 4
  • 14
2

On MacOS I installed XCode after Docker (Docker Desktop). Afterwards my Python App (testcontainers) was unable to communicate to Docker (stopped working). Running /Applications/Docker.app/Contents/MacOS/uninstall and open Docker again fixed it for me on M1 MacBook. (Removes config, images, ...)

Tim
  • 2,236
  • 1
  • 20
  • 26
1

I had this happen on a Mac after doing an OS update.

I was able to run docker on the command line but Docker Desktop wasn't running - starting Docker Desktop up fixed the issue.

tschumann
  • 2,776
  • 3
  • 26
  • 42
1

I had this problem while using ubuntu 22.04 wsl on windows and then I solve it like this

sudo update-alternatives --config iptables

it will show something like this

 Selection    Path                       Priority   Status
------------------------------------------------------------
  0            /usr/sbin/iptables-nft      20        auto mode
* 1            /usr/sbin/iptables-legacy   10        manual mode
  2            /usr/sbin/iptables-nft      20        manual mode

then press 1

Press <enter> to keep the current choice[*], or type selection number: 1

Start docker using services

sudo service docker start
0

In Windows exiting from Docker and running it again sometimes helps. Apparently not always docker starts up properly.

ganqqwerty
  • 1,894
  • 2
  • 23
  • 36
  • 1
    For me it was related to enabled corporate VPN. I disabled it and then docker started up successfully.... – zkvarz May 19 '21 at 12:04
0

In macOS with Docker Desktop 4.18, check Enable default docker socket in Settings -> Advanced section.

Ihab S
  • 1
  • 1
0

On macOS, deleting Docker's data has worked for me:

rm -rf ~/Library/Containers/com.docker.*

It's a crude solution, and I wouldn't recommend if you have any precious data in your local docker install.

Kornel
  • 97,764
  • 37
  • 219
  • 309