본문 바로가기

리눅스

젠킨스에서 도커 빌드 시 에러

반응형

젠킨스에서 도커 빌드 시 에러

docker build -t sangchul/myapp-jenkins .
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%=null&version=1: dial unix /var/run/docker.sock: connect: permission denied

이 오류는 Docker가 Docker 데몬에 연결할 때 필요한 권한이 부족하여 발생하는 것입니다. Docker는 기본적으로 루트 권한을 요구하는데, 일반 사용자 계정으로 Docker 명령을 실행하면 이러한 오류가 발생할 수 있습니다.

해결 방법

1. 루트 권한으로 실행하기

가장 간단한 방법은 Docker 명령을 실행할 때 sudo 명령어를 사용하여 루트 권한으로 실행하는 것입니다.

예를 들어

sudo docker ps

이렇게 하면 일시적으로 루트 권한으로 Docker를 사용할 수 있습니다. 하지만 매번 sudo를 입력해야 하므로 불편할 수 있습니다.

 

2. 사용자를 Docker 그룹에 추가하기

Docker 그룹에 사용자를 추가하면 해당 사용자는 루트 권한 없이 Docker 명령을 실행할 수 있습니다. 다음과 같이 명령을 실행하여 사용자를 Docker 그룹에 추가합니다.

sudo usermod -aG docker your_username

your_username은 사용자의 실제 이름으로 바꿔야 합니다. 변경 사항이 적용되려면 로그아웃 후 다시 로그인하거나, 혹은 newgrp docker 명령을 실행하여 현재 세션에서 Docker 그룹의 멤버로 로그인할 수 있습니다.

 

3. Docker 소켓 파일의 권한 변경하기

Docker 소켓 파일에 직접 권한을 부여하여 일반 사용자가 연결할 수 있도록 할 수 있습니다. 하지만 이 방법은 보안 상의 이유로 권장되지 않습니다.

sudo chmod 666 /var/run/docker.sock

 

4. Docker 데몬 재시작

위의 변경 사항을 적용했다면, Docker 데몬을 재시작하여 변경 사항이 적용되도록 합니다.

sudo systemctl restart docker

 

참고: 루트 권한이 필요한 이유는 Docker가 시스템 레벨에서 작업을 수행하기 때문입니다. 따라서 루트 권한을 사용하는 것은 보안 상의 이유로 주의해야 합니다. 가능하다면 사용자를 Docker 그룹에 추가하는 방법을 권장합니다. 이렇게 하면 특정 사용자가 Docker를 사용할 수 있으면서도 시스템 보안을 유지할 수 있습니다.

 

728x90
반응형