HOME > docker

Docker의 'ERROR Couldn't connect to Docker daemon' 에러 해결 방법

JSFollow11 Jun 2019

우분투에서 Docker와 Docker-Compose를 사용하려고 했는데, 아래와 같이 "Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?" 에러가 발생하였습니다. 해결방법에 대해서 정리하였습니다.

$ docker-compose up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

에러 내용은 Docker가 실행 중인 것 같지 않다고 하는데요. 실제로 Docker가 실행 중이 아니거나, Docker의 접근 권한이 제한되어 발생하는 에러일 수 있습니다. 그래서 Docker가 실행 중인지 확인하고, 권한 등이 올바르게 설정되었는지 확인해야 합니다.

  1. Docker가 실행 중인지 확인하기 sudo service docker status로 Docker가 실행 중인지 확인합니다. Active의 상태가 Running이면 실행 중인 것입니다.
$ sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-06-11 17:25:04 KST; 8min ago
     Docs: https://docs.docker.com
 Main PID: 19093 (dockerd)
    Tasks: 12
   CGroup: /system.slice/docker.service
           └─19093 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
....
  1. Docker 소켓 파일 권한 확인 도커의 소켓 파일의 권한이 올바르게 설정되어있는지 확인해야 합니다. 아래와 같이 ls -la /var/run/docker.sock명령어로 확인할 수 있으며 소유자는 root, 그룹은 docker로 설정되어야 합니다.

    $ sudo ls -la /var/run/docker.sock
    srw-rw---- 1 root docker 0 Jun 11 17:25 /var/run/docker.sock
  2. 실행 중인 유저가 docker 그룹에 포함되었는지 확인 위의 1, 2번이 잘 설정되었다면 3번이 설정되지 않아서 에러가 발생했을 가능성이 높습니다. 현재 실행 중인 유저가 Docker의 기능을 쓰기 때문에, 이 유저가 docker 그룹에 포함되어 있어야 합니다. 물론 모든 명령어에 sudo를 붙여 루트로 실행하면 문제가 해결되지만 번거롭기 때문에 그룹에 유저를 추가해주는 것이 좋습니다.

다음 명령어를 입력하시면 현재 유저가 docker 그룹에 추가됩니다.

$ sudo usermod -aG docker ${USER}

변경된 내용이 적용되려면 유저가 로그아웃/로그인 되거나 시스템을 재시작해야 합니다. 그 이후 다시 docker를 실행해보면 에러 없이 동작하는 것을 볼 수 있습니다.

참고