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

 

복사했습니다!