ming
ming

Reputation: 2661

docker.errors.DockerException: Error while fetching server API version

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?

Upvotes: 266

Views: 467359

Answers (30)

Camarero
Camarero

Reputation: 752

Check the value of DOCKER_HOST environment value. Unless set it will use the default default docker socket unix://var/run/docker.sock.

Check DOCKER ENDPOINT in your current docker context

% docker context ls

NAME        DESCRIPTION                               DOCKER ENDPOINT                                           ERROR
colima *    colima                                    unix:///Users/enriccamarero/.colima/default/docker.sock   
default     Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                   

Ensure the selected context socket matches the one on your env variable, otherwise you will get the FileNotFound error.

Upvotes: 0

Alex Shaw
Alex Shaw

Reputation: 91

I ran into this same issue on my Macbook Pro.

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

I finally fixed it by flipping on the setting Allow the default Docker socket to be used (requires password) in Docker Desktop -> Settings -> Advanced.

Upvotes: 1

Emanuele Paolini
Emanuele Paolini

Reputation: 10172

Had the same problem on newly installed ubuntu 24. If you feel the issue is about compatibility with python packages a possible and natural solution is to install docker from the docker package instead of the ubuntu one. Follow instructions on the docker site. Worked without issues for me and provided the latest version: docker-compose is now a plugin of docker and you use it with docker compose instead of docker-compose.

Upvotes: 0

Rahul Bagal
Rahul Bagal

Reputation: 61

Please make sure you have docker compose v2 by using the command:

sudo apt install docker-compose-v2

After that, you can run start docker compose by navigating to the appropriate directory where your docker-compose.yaml file exists and running:

docker compose up -d

Upvotes: 6

Hossein Shafiei
Hossein Shafiei

Reputation: 645

Just changes docker-compose to docker compose. In newer version you should use docker compose up -d instead docker-compose up -d befor this

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose 
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose version

or you can install docker-compose-v2

sudo apt install docker-compose-v2

and then use

docker compose up -d or docker compose build or ...

instead

docker-compose

Upvotes: 37

Unsolved Cypher
Unsolved Cypher

Reputation: 1623

If you are seeing this in May of 2024, this is likely a result of an issue with a new release of Python's request library (2.32.0). At the time of this writing, there's a pull request to fix this, but until it is merged, this issue can be resolved by downgrading the requests library to below 2.32.0: pip3 install requests==2.31.0

Upvotes: 50

Sardar
Sardar

Reputation: 658

I was using Ubuntu version 24 and I had this error. I changed to version 22 and the problem was solved.

Upvotes: 0

Januka samaranyake
Januka samaranyake

Reputation: 2597

I have no idea the cause of error but reinstalling requests and urllib3 worked for me.

pip install --force-reinstall 'requests<2.29.0' 'urllib3<2.0'

Upvotes: 6

Amirjon Rakhimov
Amirjon Rakhimov

Reputation: 1

try to run your command with sudo.

Upvotes: 0

Yaakov Klein
Yaakov Klein

Reputation: 151

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.

Upvotes: 2

Lumkile Ntetha
Lumkile Ntetha

Reputation: 81

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

Upvotes: 2

dineshsivalingam
dineshsivalingam

Reputation: 177

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

Upvotes: 4

Florian Ludewig
Florian Ludewig

Reputation: 6002

I had this issue while starting docker-compose. The problem was caused by `urllib3'. The fix is simple:

pip install 'urllib3<2'

Source: https://github.com/docker/docker-py/issues/3113#issuecomment-1579172104

Upvotes: 26

Kornel
Kornel

Reputation: 100180

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.

Upvotes: 1

vladimir
vladimir

Reputation: 15226

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

Upvotes: 43

Tim
Tim

Reputation: 2381

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, ...)

Upvotes: 2

Ihab S
Ihab S

Reputation: 121

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

Upvotes: 12

Andrey Mazur
Andrey Mazur

Reputation: 570

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

Upvotes: 2

Chris R
Chris R

Reputation: 29

My issue was I was not signed into docker desktop.

Upvotes: 2

Javad
Javad

Reputation: 2098

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.

Upvotes: 2

Balraj
Balraj

Reputation: 61

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

Upvotes: 6

tschumann
tschumann

Reputation: 3256

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.

Upvotes: 1

Daniel N.
Daniel N.

Reputation: 3892

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.

Upvotes: 377

Isaque Bezerra
Isaque Bezerra

Reputation: 499

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.

Upvotes: 38

Eugene Gr. Philippov
Eugene Gr. Philippov

Reputation: 2092

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

Upvotes: 2

Xenxier
Xenxier

Reputation: 471

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.

Upvotes: 8

mansoor.khan
mansoor.khan

Reputation: 2616

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. :-)

Upvotes: 6

Mafei
Mafei

Reputation: 3819

set the permission like this,

sudo chmod 666 /var/run/docker.sock

Upvotes: 127

Cristian mar&#237;n
Cristian mar&#237;n

Reputation: 329

sudo service docker start or
sudo service docker restart

Upvotes: 18

ewulff
ewulff

Reputation: 2259

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

Upvotes: 9

Related Questions