문제 발생
도커 설치 후 테스트를 위해 간단한 컨테이너를 내려받아서 실행시켜보았다.
$ docker run -it --rm ubuntu:16.04
에러와 함께 실행이 되지 않는다. 메시지는 아래와 같다.
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
해결 방식의 이해
docker
관련 명령어를 사용하는 도커 데몬은 Unix 소켓을 통해 실행한다. 위의 에러에서도 볼 수 있는 var/run/docker.sock
파일이다. 해당 소켓 파일은 root
사용자의 소유권한으로 기본설정되어 있고, 이에 sudo
권한으로 실행되어야 한다. 이를 일반 사용자가 접근 할 수 있도록 docker
라는 그룹을 만들고 여기에 일반 사용자를 추가하여 해결한다.
즉 해당 문제의 해결 방식은 기존 sudo
권한으로 실행해야하는 docker
소켓을 일반 사용자가 사용할 수 있는 권한을 부여하는 과정이다.
현재 사용자 그룹 확인 및 추가
터미널에 다음과 같이 입력하여 현재 사용자의 속해있는 그룹을 확인한다. docker
가 출력에 있는지 학인한다.
$ groups $계정명
‘docker’ 그룹 생성
docker
그룹을 생성해준다.
$ sudo groupadd docker
사용자를 docker
그룹에 추가한다 다음과 같이 추가한다.
$ sudo usermod -aG docker $계정명
해당 작업 후에는 터미널 세션을 종료 후 다시 연결하여 작업해야 한다. 로컬에서 작업하였다면 로그아웃했다가 다시 로그인하여 작업을 시도한다.
docker 소켓 파일 그룹과 권한 설정
만약 위의 작업들을 수행했음에도 같은 오류가 발생한다면 권장하지는 않지만 아래와 같은 방법들을 시도해 볼 수 있다.
소켓 파일 그룹 지정
$ sudo chown root:docker /var/run/docker.sock
소켓 파일 실행권한 변경
$ sudo chmod 666 /var/run/docker.sock
유효성 검사
sudo
권한 없이 docker
명령어를 사용할 수 있는지 테스트 해보기 위해 다음 커맨드를 입력하여 테스트해보자
$ docker run --rm hello-world
비슷하지만 다른 에러
혹시 아래와 같은 에러 출력 시 디렉토리의 권한 문제일 가능성이 있다.
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
이럴 때는 해당 디렉토리의 소유자 변경과 권한 변경을 통한 문제해결을 시도해본다
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
댓글남기기