카테고리 없음
도커 커맨드 사용 시 sudo를 하지 않아도 되게 만들기
피리음
2023. 3. 16. 17:00
도커는 설치했다고 가정하고 설명합니다
기존에는 아래와 같이 sudo 없이는 도커 실행이 불가능하였다.
# 다음과 같이 기존에는 sudo 없이는 도커 run이 불가능하였다.
# 권한이 없다고 나옴.
$ docker run docker-image
ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
1. 도커 그룹 만들기
# docker 그룹을 만들기
$ sudo groupadd docker
2. 도커 그룹에 자기 자신 추가하기
# 유저 id 가 'sori'인 것을 확인
$ whoami
sori
# docker 그룹에 'sori' 유저 추가
$ sudo usermod -aG docker sori
3. 로그 아웃한 뒤 다시 로그인하여 그룹 멤버쉽을 갱신한 뒤, 그룹 변경사항을 갱신시킨다.
# 컴퓨터 로그 아웃, 로그인
# 이후, docker 그룹 변경 사항 갱신
$ newgrp docker
도커 그룹에 추가해야 하는 sudo 없이 실행이 가능한 이유
기본적으로 도커는 Unix socket 과 바인딩합니다.(TCP port와 연결하는 것이 아님). 기본적으로 Unix socket 은 root 유저가 소유하기 때문에 다른 유저들은 오직 sudo (root 유저의 권한을 일시적으로 빌리는 커맨드) 를 통해서만 도커에 접근이 가능하며 도커 데몬은 항시 root user로서 동작합니다.
따라서 원래는 sudo 를 통해야만 도커에 접근이 가능하나 docker 그룹에 유저를 추가하면 해당 유저는 sudo를 통하지 않아도 docker를 실행할 수 있습니다. 왜냐하면 docker 그룹에 사용자를 추가하면 Docker가 Docker 엔진과 통신하는 데 사용하는 Docker 데몬 소켓(/var/run/docker.sock)에 액세스할 수 있는 권한이 그룹에 부여되기 때문입니다. 이를 통해 docker 그룹의 사용자는 루트 권한 없이도 Docker 명령을 실행할 수 있습니다.
- 보다 상세한 이유는 추후에 찾아서 업데이트할 예정
https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user