System Engineering/Docker

Docker #12. Got permission denied while trying to connect to the Docker daemon socket 해결방법 #Jenkins

ZunoXI 2021. 6. 17.



개요

Docker socket에대한 permission 권한부여

Docker Socket Permission

오늘포스팅은 아주 짧지만 해당 방법을 얻고자 필자가 들인시간은 꽤 길다. 기존 CI/CD 파이프라인을 구축하던 중 docker를 통한 k8s 환경에 어플리케이션을 배포할 일이 있었는데, 이때 젠킨스내의 빌드 시 docker가 정상적으로 빌드 되지 않으며 "Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock" 라는 에러를 검출했다. 이에 대한 해결방법을 기술한다.

 

 

 

 

 

 


 

 

1. 에러내용

 

먼저 출력된 에러는 서두에 언급한 것과 같이 "Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock"이다. 즉, docker 데몬 소켓에 연결하는데 권한이 없다는 뜻이다. 실제로 젠킨스 빌드과정에서 아래와 같이 표시되었다.

 

 

 

2. 원인 및 해결방법

 

원인은 간단하다. docker 소켓에 접근하려는데 권한이 없다. 해당 파일 위치를 찾아가보면 root:root 권한이기 때문에 docker user가 접근 시 사용이 제한되는 경우이다. 

 

해결방법 역시 간단하다. 모든 그룹 접근가능과 docker계정에 권한부여를 해주면 된다. 이때 현재 터미널에 접속되어있는 계정을 docker 그룹에 포함시켜 주면 되며 아래와 같이 진행하면된다.

 

sudo usermod -a -G docker $USER   #경우에 따라 dockerroot로 설정
sudo chmod 777 /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock

 

이후 접속해있는 터미널을 로그아웃 후 재접속하거나 재부팅을 통해 정상적으로 docker socket에 접속이 되는지 확인해본다. 필자같은 경우도 젠킨스에서 정상적으로 빌드 및 푸시가 완료되었다 :)

 

 

 

 

반응형

댓글