Ubuntu 환경에서 Docker 권한 Error

김택수·2023년 1월 26일
0

사이드 프로젝트로 선물 추천 프로젝트를 진행하고 있는 도중, CI/CD를 적용하고자 Docker를 Install하고 사용하는 과정에서 생긴 permission Error에 대해 정리한다.

현재 OS는 Linux 기반의 Ubuntu를 사용하고 있는데, Docker 공식문서를 보고 Docker Install을 진행하였고, 정상적으로 설치 후 터미널에서 docker images 명령어로 docker로 만들어진 image들을 볼 수 있도록 하였으나, 하단과 같은 Error를 반환했다.

unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

따져보자면 docker의 socket파일이 실행권한이 없다고 하는 Error Message였다.

권한을 부여하기 위해서 docker.sock 파일의 접근할 수 있는 권한을 모든 사용자로 지정하기 위해서 sudo chmod 666 /var/run/docker.sock 명령어를 사용했지만 여전히 같은 Error를 반환했다.

이것저것 만져보던 도중 하단과 같은 Error를 반환했다.

Got permission denied while trying to connect to the Docker daemon socket

해당 Error는 백그라운드에 Docker가 실행되지 않았을 때 발생한다는 것을 알게됐고, sudo service docker start 로 docker를 실행했다. 결과는 OK를 반환했는데, 실행상태를 확인해보려 sudo service docker status 명령어를 사용하였는데 결과는 지속적으로 Docker is not running 즉, docker가 실행되지 않고 있다는 결과를 반환했다.

두 상황은 일맥상통한 것이었는데, sudo를 통해서도 docker를 실행할 수 없는 이유 또한 현재 ubuntu 계정에 권한이 없기 때문이었다.
그런데 여기에서의 맹점은 ubuntu 사용 환경에서는 root계정을 사용하는 것을 지양한다. 그렇기 때문에 어떻게든 권한 문제를 해결해야 했다.

권한 문제를 해결하기 위해 하단과 같은 절차로 실행할 수 있었다.

  1. docker의 권한그룹을 확인했을 때 root로만 되어 있어서 root 계정이 아닌 지금과 같은 상태에서는 권한 Error를 반환할 수 밖에 없음.
  2. 도커 권한그룹에 sudo usermod -aG docker $USER 로 현재 로그인 되어있는 ubuntu user를 추가해줬다.
  3. 이대로는 바로 적용되지 않고 로그아웃 후 재접속 or newgrp docker로 바로 적용시켜 줄 수 있다.

해당 내용으로 Docker is running message를 반환받았지만, 재접속 후 다시 시도했을 땐 또 실행되지 않았다.

구글 검색을 통해 아래와 같은 절차를 통해 해결할 수 있었다.

sudo update-alternatives --config iptables 명령어로 해결을 했는데,

  1. update-alternatives 명령어는 설치된 패키지들을 관리 할 수 있는 명령어이며
  2. --config iptables를 통해 iptables에 대한 설정을 할 수 있다.
  3. 터미널 상에 반환되는 선택지 중 기존 iptabels-nft가 default로 되어있다면 iptables-legacy로 바꿔준다.

위와 같은 방법으로 해결했는데, 해당 내용에 대해 궁금증이 생겨 추가적으로 왜 이런 현상이 발생한 것인지에 대한 검색을 했다.

검색결과는 ubuntu 22.04(jammy) 버전 이상부터 default 값이 기존 legacy에서 nft로 변경이 되었는데, 이것이 호환 문제를 일으킨 것이라고 이해하였다.

아직 iptables나 어떤 호환 문제를 일으키는지는 추가적으로 찾아봐야 하겠지만, 검색결과가 만족스러운 것이 없어 아직 해당 개념은 알아내지 못했다.

참고자료 : docker 권한 문제 / ubuntu 22.04 버전에 docker install

profile
개발자 키우기 Lv1

0개의 댓글