You are not logged in.

#1 2017-01-30 22:40:04

leonixyz
Member
Registered: 2014-07-12
Posts: 62

[SOLVED] docker-compose: couldn't connect to docker daemon

Hello,

I installed docker and docker-compose from pacman. I didn't touched their config in any way.
I have my image ready, and now want to make it easier for others to run my web application (which requires a database running in another container) by using docker-compose. I want to build the following simple docker-compose.yml

version: '3'

services:

  silverstripe:
    image: silverstripe:0.0.1
    build:
      context: .
    depends_on:
      - mysql
    networks:
      - devnet
    volumes:
      - ./src:/var/www/localhost/htdocs

  mysql:
    image: mysql
    networks:
      - devnet

networks:
  devnet:
    driver: bridge

dockerd is running

$ sudo systemctl start docker
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ sudo docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-8:2-3934984-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 94.92 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.137 (2016-11-30)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host null bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.9.6-1-ARCH
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 6.749 GiB
Name: banana
ID: YWOZ:XHDS:CTRU:TENB:3FA4:ZFOS:2AXO:YGLD:5Q2Q:GDG4:SK2M:CP3R
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

docker-compose is giving me an error if I want to build the file above

$ sudo docker-compose build
[sudo] password for leonixyz: 
mysql uses an image, skipping
Building silverstripe
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.

The default location for docker's socket is /var/run/docker.sock, but exporting DOCKER_HOST=unix:///var/log/docker.sock or passing -H to docker-compose seem to make no difference (note the ERROR line is weirdly still referencing the same location as before)

$ ls -l /var/run/docker.sock 
srw-rw---- 1 root docker 0 Jan 30 22:42 /var/run/docker.sock
$ sudo docker-compose -H unix:///var/run/docker.sock build
mysql uses an image, skipping
Building silverstripe
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.

finally, also docker-compose up (without having anything built) seems having troubles finding the socket

sudo docker-compose up
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 210, in _raise_for_status
    response.raise_for_status()
  File "/usr/lib/python3.6/site-packages/requests/models.py", line 909, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localunixsocket/v1.25/info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/compose/cli/errors.py", line 44, in handle_connection_errors
    yield
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 116, in perform_command
    handler(command, command_options)
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 848, in up
    remove_orphans=remove_orphans)
  File "/usr/lib/python3.6/site-packages/compose/project.py", line 379, in up
    warn_for_swarm_mode(self.client)
  File "/usr/lib/python3.6/site-packages/compose/project.py", line 557, in warn_for_swarm_mode
    info = client.info()
  File "/usr/lib/python3.6/site-packages/docker/api/daemon.py", line 73, in info
    return self._result(self._get(self._url("/info")), True)
  File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 216, in _result
    self._raise_for_status(response)
  File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 212, in _raise_for_status
    raise create_api_error_from_http_exception(e)
  File "/usr/lib/python3.6/site-packages/docker/errors.py", line 30, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 400 Client Error: Bad Request for url: http+docker://localunixsocket/v1.25/info ("client is newer than server (client API version: 1.25, server API version: 1.24)")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    load_entry_point('docker-compose==1.10.0', 'console_scripts', 'docker-compose')()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 64, in main
    command()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 116, in perform_command
    handler(command, command_options)
  File "/usr/lib/python3.6/contextlib.py", line 100, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/lib/python3.6/site-packages/compose/cli/errors.py", line 54, in handle_connection_errors
    log_api_error(e, client.api_version)
  File "/usr/lib/python3.6/site-packages/compose/cli/errors.py", line 71, in log_api_error
    if b'client is newer than server' not in e.explanation:
TypeError: 'in <string>' requires string as left operand, not bytes

Am I missing something?

thanks in advance


----------------------


edit:

after seeing this:

$ ps aux | grep dockerd
root     13604  0.0  0.5 496600 38692 ?        Ssl  22:42   0:02 /usr/bin/dockerd -H fd://

I tried this, but it's even more confusing...

$ sudo docker-compose -H fd:// build 
Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 11, in <module>
    load_entry_point('docker-compose==1.10.0', 'console_scripts', 'docker-compose')()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 64, in main
    command()
  File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 113, in perform_command
    project = project_from_options('.', options)
  File "/usr/lib/python3.6/site-packages/compose/cli/command.py", line 36, in project_from_options
    environment=environment
  File "/usr/lib/python3.6/site-packages/compose/cli/command.py", line 111, in get_project
    host=host, environment=environment
  File "/usr/lib/python3.6/site-packages/compose/cli/command.py", line 83, in get_client
    environment=environment, tls_version=get_tls_version(environment)
  File "/usr/lib/python3.6/site-packages/compose/cli/docker_client.py", line 74, in docker_client
    return APIClient(**kwargs)
  File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 99, in __init__
    base_url, IS_WINDOWS_PLATFORM, tls=bool(tls)
  File "/usr/lib/python3.6/site-packages/docker/utils/utils.py", line 456, in parse_host
    raise errors.DockerException("fd protocol is not implemented")
docker.errors.DockerException: fd protocol is not implemented

Last edited by leonixyz (2017-02-05 21:11:48)

Offline

#2 2017-02-01 12:40:34

rasertux
Member
From: Florianópolis, Brazil
Registered: 2012-03-03
Posts: 46

Re: [SOLVED] docker-compose: couldn't connect to docker daemon

Your user is in docker group? If not, try

sudo gpasswd -a user docker

and don't forget to relogin after that

Offline

#3 2017-02-05 21:15:55

leonixyz
Member
Registered: 2014-07-12
Posts: 62

Re: [SOLVED] docker-compose: couldn't connect to docker daemon

rasertux wrote:

Your user is in docker group? If not, try

sudo gpasswd -a user docker

and don't forget to relogin after that

No, I'm not in the docker group, but because I use docker prefixed by sudo, I don't need to be part of the docker group: i have su access to the socket file.

In the end it turned out that docker-compose.yml needed to start with

version: '2'

instead of

version: '3'

it seems that docker-compose error messages are handled very werdly.

Last edited by leonixyz (2017-02-05 21:16:34)

Offline

Board footer

Powered by FluxBB