Non-root user 로서 Docker 를 사용하다보면 모든 docker 명령어에 sudo를 사용하여야하는 불편함이 존재한다. 왜 그런지 그리고 어떻게 해결할 수 있는지 한번 알아보도록 하자.
Manage Docker as a non-root user
왜 발생하는가
Docker daemon은 TCP port 대신 Unix socker에 바인딩한다. 기본적으로 Unix socket은 root user에 의해서 소유되며, 다른 user는 sudo 를 통해서만 access 할 수 있다. 즉, Docker daemon은 항상 root user로 실행된다는 말이다.
Docker 명령어 앞에 sudo 를 붙이지 않고 사용하려면, Docker라는 Unix group을 생성하고 해당 그룹에 사용자들을 추가하면 된다. 이렇게 할 경우, Docker daemon이 시작되면 Docker group의 구성원이 access 할 수 있는 Unix Socket이 생성된다.
Warning
* 위와 같이 Docker group을 생성할 경우, 해당 group은 root user 와 동등한 권한을 부여받는다. 즉, 보안상 문제가 발생할 수 있으니 주의하자.
Create Docker group
1. docker group 생성
# Create the docker group.
$ sudo groupadd docker
2. docker group에 사용자 추가
$ sudo usermod -aG docker $USER
3. log out & log back
- 가상환경에서 작업하는 경우에는 꼭 해당 작업이후에는 가상환경을 재시작하자.
- Desktop Linux 환경 및 여타 환경을 사용하는 경우, 완전히 session에서 완전히 log out 한 뒤 시작해보자.
- Linux 에서 작업하는 경우, 아래의 명령어 한줄이면 된다.
$ newgrp docker
4. docker test
docker run hello-world